0

重複の可能性:
os.path.dirname(__ file__)は空を返します

私のPythonスクリプトのユーザーは、次のエラーが発生したと言いました。

Traceback (most recent call last):
File "MCManager.py", line 7, in <module>
os.chdir(os.path.dirname(__file__))
OSError: [Errno 2] No such file or directory: ''

スクリプトが存在するディレクトリが存在しないのはどうしてですか?互換性の問題ですか?エラーのあるOSとバージョンと同じOSとバージョンを使用していますが、これを複製できませんでした。

4

1 に答える 1

6

Python 2で、同じディレクトリからスクリプトを実行すると発生します。例:

$ echo "print __file__" > /tmp/spam.py
$ python /tmp/spam.py 
/tmp/spam.py

$ cd /tmp
$ python spam.py
spam.py

1つの解決策はos.path.abspath(__file__)、コードで使用することです。これにより、以下の3つの使用例すべてでスクリプトディレクトリをいつでも解決できます。

$ cat /tmp/spam.py
import os
print os.path.dirname(os.path.abspath(__file__))

$ python /tmp/spam.py
/tmp

$ cd /tmp
$ python /tmp/spam.py
/tmp

$ python spam.py
/tmp
于 2012-10-14T12:26:07.450 に答える