98

何らかの理由で、私のコードで単純なファイルを開くのに問題があります。

これはコードです:

file1 = open('recentlyUpdated.yaml')

エラーは次のとおりです。

IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
  • 当然、これが正しいファイル名であることを確認しました。
  • open()ファイルへのフルパスを指定してファイル内を移動しようとしましたが、どれも機能していないようです。
4

6 に答える 6

123
  • ファイルが存在することを確認してください: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\scriptsWindows を使用している場合)。
  • 相対パスは、コンピューターのルート ディレクトリから始まらないパスであり、作業ディレクトリと呼ばれるものからの相対パスです。を呼び出すと、Python の現在の作業ディレクトリを表示できますos.getcwd()

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

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

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
于 2012-08-30T17:03:23.360 に答える
26

おそらく問題は、ファイルを開くために相対ファイル パスを使用しているが、現在の作業ディレクトリが想定どおりに設定されていないことです。

相対パスが python スクリプトの場所を基準としているというのはよくある誤解ですが、これは正しくありません。相対ファイル パスは常に現在の作業ディレクトリに対して相対的であり、現在の作業ディレクトリが Python スクリプトの場所である必要はありません。

次の 3 つのオプションがあります。

  • 絶対パスを使用してファイルを開きます。

    file = open(r'C:\path\to\your\file.yaml')
    
  • Python スクリプトに関連するファイルへのパスを生成します。

    from pathlib import Path
    
    script_location = Path(__file__).absolute().parent
    file_location = script_location / 'file.yaml'
    file = file_location.open()
    

    (参照:現在実行中のファイルのパスと名前を取得するにはどうすればよいですか? )

  • ファイルを開く前に、現在の作業ディレクトリを変更します。

    import os
    
    os.chdir(r'C:\path\to\your\file')
    file = open('file.yaml')
    

「ファイルが見つかりません」エラーを引き起こす可能性のあるその他の一般的な間違いには、次のものがあります。

  • ファイル パスで誤ってエスケープ シーケンスを使用:

    path = 'C:\Users\newton\file.yaml'
    # Incorrect! The '\n' in 'Users\newton' is a line break character!
    

    この間違いを避けるために、ファイル パスには生の文字列リテラルを使用することを忘れないでください。

    path = r'C:\Users\newton\file.yaml'
    # Correct!
    

    (参照: Python の Windows パス)

  • Windows ではファイル拡張子が表示されないことを忘れている:

    Windows では既知のファイル拡張子が表示されないため、ファイルfile.yamlの名前が だと思っていても、実際には という名前になっていることがありますfile.yaml.yaml。ファイルの拡張子を再確認してください。

于 2018-09-08T22:39:52.963 に答える
7

ファイルは存在している可能性がありますが、パスが異なる可能性があります。ファイルの絶対パスを書いてみてください。

関数を試しos.listdir()て、少なくとも python がファイルを認識していることを確認してください。

次のようにしてみてください。

file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
于 2012-08-30T17:07:30.347 に答える