OSError の解決: [Errno 2] Python でそのようなファイルまたはディレクトリはありません

Fariba Laiq 2023年6月21日
  1. Python の OSError: [Errno 2] No Such File or Directory
  2. Python で OSError: [Errno 2] No Such File or Directory を解決する
OSError の解決: [Errno 2] 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
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Python Error