open() が FileNotFoundError / IOError: '[Errno 2] No such file or directory' を返す 質問する

open() が FileNotFoundError / IOError: '[Errno 2] No such file or directory' を返す 質問する

recentlyUpdated.yamlPython スクリプトからファイルを開こうとしています。しかし、次の操作を試みると、

open('recentlyUpdated.yaml')

次のようなエラーが表示されます:

IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'

なぜですか? どうすれば問題を解決できますか?

ベストアンサー1

Python がファイルを見つける方法を明確にしましょう:

  • アン絶対パスC:\Python\scriptsたとえばWindows の場合、コンピュータのルート ディレクトリから始まるパスです。
  • 相対パスコンピュータのルートディレクトリから始まるパスではなく、作業ディレクトリ

を実行しようとするとopen('recentlyUpdated.yaml')、Python は相対パスが渡されていることを認識するため、現在の作業ディレクトリ内でファイルを検索します。

問題を診断するには:

  • ファイルが存在すること(および正しいファイル拡張子を持っていること)を確認します。os.listdir()現在の作業ディレクトリ内のファイルのリストを表示します。
  • 期待されるディレクトリにいることを確認するには、os.getcwd()
    IDE からコードを起動する場合は、別のディレクトリになる場合があります。)

その後、次のいずれかを実行できます。

  • 電話os.chdir(dir)dirファイルを含むディレクトリです。これにより、現在の作業ディレクトリが変更されます。次に、名前だけを使用してファイルを開きます (例: ) open("file.txt")
  • 呼び出し時にファイルへの絶対パスを指定しますopen

ところで:

  • 使う生の文字列( r"") パスにバックスラッシュが使用されている場合は、次のようになります。dir = r'C:\Python32'
    • 生の文字列を使用しない場合は、すべてのバックスラッシュをエスケープする必要があります。'C:\\User\\Bob\\...'
    • スラッシュは Windows でも機能するため'C:/Python32'、エスケープする必要はありません。

例: がfile.txtにあるとしますC:\Folder

これを開くには、次の操作を実行します。

os.chdir(r'C:\Folder')
open('file.txt')  # relative path, looks inside the current working directory

または

open(r'C:\Folder\file.txt')  # absolute path

おすすめ記事