1. ホーム
  2. python

[解決済み] open() で FileNotFoundError/IOError が発生しました。Errno 2 そのようなファイルまたはディレクトリがありません

2022-03-12 13:52:44

質問

なぜか私のコードは、単純なファイルを開くのに問題があります。

これがそのコードです。

file1 = open('recentlyUpdated.yaml')

そして、そのエラーは

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

  • 当然、これが正しいファイル名であることを確認しました。
  • ファイルを移動してみましたが open() のフルパスが表示されますが、どれもうまくいきません。

解決方法は?

  • ファイルが存在することを確認します。 os.listdir() 現在の作業ディレクトリにあるファイルのリストを見るには
  • を使用して、自分がいるディレクトリにいることを確認します。 os.getcwd() (IDEからコードを起動した場合は、別のディレクトリにいる可能性が高いです)
  • その後、どちらかを行います。
    • 電話 os.chdir(dir) , dir は、そのファイルがあるフォルダーです。 を実行した後、今までと同じようにファイル名だけを指定してファイルを開いてください。
    • には、ファイルへの絶対パスを指定します。 open を呼び出します。
  • パスがバックスラッシュを使用している場合、以下のように生の文字列を使用することを忘れないでください。 というように dir = r'C:\Python32'
    • raw-stringを使用しない場合、すべてのバックスラッシュをエスケープする必要があります。 'C:\\User\\Bob\\...'
    • Windowsではフォワードスラッシュも有効です 'C:/Python32' で、エスケープする必要はありません。

Pythonがどのようにファイルを見つけるのか、明らかにしましょう。

  • アン 絶対パス は、コンピュータのルートディレクトリから始まるパスで、たとえば C:\Python\scripts Windowsの場合
  • A 相対パス は、コンピュータのルートディレクトリから始まらないパスであり、代わりに 作業ディレクトリ . Pythonの現在の作業ディレクトリを表示するには、以下のようにします。 os.getcwd() .

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

呼び出し os.chdir() は、現在の作業ディレクトリを変更します。

例 例えば file.txtC:\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