0

私は次のようなことを言っている参照を見続けています:

「スマートなことをしている人々__file__

主に python のパッケージングとパッケージング戦争のコンテキストで。

このSOの質問で説明されているように、これはファイル名とパスを指定するモデルの属性にすぎないことがわかる限り、何かが足りないと思います

何がそんなに特別で__file__、人々がそれを使って行っている「賢いこと」の例は何ですか?

4

1 に答える 1

3

importプロジェクト ディレクトリを PYTHONPATH の下に置くことで作業中のコードをロードしたい場合、およびコードがプロジェクト ディレクトリに保存したデータ ファイルに依存している場合は、 を使用__file__してプロジェクトの場所を取得し、データを取得できます。

私は自分が取り組んでいるすべての作業を 経由importでロードするのが好きですが、同僚は私が与えたスクリプトをコマンド ラインからプロジェクト ディレクトリ内で実行します。したがって、これらのスクリプトでは、getwd次のように定義された関数を使用して、スクリプトの実行方法に関係なく、プロジェクト ファイルの正しい場所を取得します。

import os
def getwd():
    return os.path.dirname(__file__) if '__file__' in globals() else os.getcwd()

import経由でスクリプトをロードすると、スクリプトgetwdのディレクトリが返されます。同僚がプロジェクト ディレクトリ内のコマンド ラインからスクリプトを実行すると、 global はなく__file__getwd単に現在のディレクトリが返されます。

于 2013-06-12T19:46:01.543 に答える