0

私は奇妙な問題を扱っています。次の簡単なコードを検討してください。

print(__file__)
print("***" + os.path.dirname(__file__) + "###")

Fedora 23 OS を使用しているラップトップでこのコードを実行すると、出力は次のようになります。

/home/.../ExperimentalSystem/BullshitSetupGenerator.py
***/home/.../ExperimentalSystem###

Ubuntu 15.10 で同じコードを実行します。

BullshitSetupGenerator_delete_me.py
***###

誰かが私に理由を説明できますか? 何か不足していますか?

4

2 に答える 2

3

__file__ファイルが何であるかをPythonに伝える引数によって定義されます。たとえば、 というフォルダにいるとしますHere。あなたは言うことができpython ../Here/here.py、そして__file__なるでしょう../Here/here.pypython here.pyだけで同じファイルを実行した場合は__file__here.py. 絶対パスまたは奇妙な相対パスを使用せずに同じディレクトリで Python ファイルを実行すると、ファイルには言及されたディレクトリがありません。つまり、os.dirname(__file__)空白になります。必要に応じて、で絶対パスを取得できますos.path.abspath()

于 2016-04-07T02:40:03.313 に答える
2

属性だけに頼りたくないかもしれませんが、絶対__file__パスがあることを確認してくださいabspath:

os.path.dirname(os.path.abspath(__file__))
于 2016-04-07T02:39:28.923 に答える