HOWTO · Python
OSError の解決: [Errno 2] Python でそのようなファイルまたはディレクトリはありません
このチュートリアルでは、OSError: Errno 2 No such File or Directory in Python の原因とその解決方法を示します。
このページの内容
Python でプログラムを実行すると、エラーに直面することがよくあります。 この記事では、Python の OSError: [Errno 2] No such file or directory について説明します。
Python の OSError: [Errno 2] No Such File or Directory
このOSError: [Errno 2] No such file or directoryは、OS ライブラリによって生成されます。 このエラーは、アクセスしようとしているファイルまたはディレクトリが利用できない場合に発生します。
これは、2つの重要な理由により発生します。 開こうとしているファイルまたはフォルダーが存在しないか、そのファイルまたはフォルダーの間違ったパスを入力しています。
Python はこのエラーを発生させ、プログラムで参照されているファイルにアクセスしないとプログラムを実行できないことをユーザーに通知します。 Python バージョン 3 では、FileNotFoundError: [Errno 2] No such file or directory が発生します。
このエラーは OSError のサブクラスであり、このコードを Ubuntu OS で実行します。
コード例:
# Python 3.x
import os
import sys
os.chdir(os.path.dirname(sys.argv[0]))
python mycode.py を使用してスクリプトを実行すると、以下の出力が得られます。
出力:
#Python 3.x
Traceback (most recent call last):
File "mycode.py", line 3, in <module>
os.chdir(os.path.dirname(sys.argv[0]))
FileNotFoundError: [Errno 2] No such file or directory: ''
Python で OSError: [Errno 2] No Such File or Directory を解決する
パスを指定しない場合、sys.argv[0] は mycode.py にアクセスし、os.path.dirname はパスを特定できません。 次のスクリプトを実行して、コマンド python ./mycode.py を使用してエラーを解決できます。
# Python 3.x
import os
import sys
os.chdir(os.path.dirname(sys.argv[0]))
print("Hello")
出力:
#Python 3.x
Hello
このエラーを解決する別の方法は、上記のコードを次のように記述することです。 sys.argv[0] は単なるスクリプト名でありディレクトリではないため、os.path.dirname() は何も返しません。
それは、os.path.abspath() を使用してディレクトリ名付きの正しい絶対パスに変換されます。 コマンド python mycode.py を使用して次のコードを実行します。
# Python 3.x
import os
import sys
os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
print("Hello")
出力:
#Python 3.x
Hello