os.listdir を使用してファイルを反復処理するときに FileNotFoundError が発生する
os.listdir を使用してディレクトリ内のファイルを反復処理するときに、ファイルが存在するにもかかわらず FileNotFoundError が発生します。これは、os.listdir がファイルへの完全なパスではなく、ファイル名のみを返すためです。
import os path = r'E:/somedir' for filename in os.listdir(path): f = open(filename, 'r') ... # process the file
この例では、filename にはファイル名のみが含まれるため、ファイルが存在しても Python は FileNotFoundError をスローします。などのフルパスの代わりに、「foo.txt」など'E:/somedir/foo.txt'.
この問題を解決するには、os.path.join を使用してファイル名の先頭にディレクトリ パスを追加します。
path = r'E:/somedir' for filename in os.listdir(path): with open(os.path.join(path, filename)) as f: ... # process the file
さらに、これをお勧めします。ファイルを開くためのステートメントを備えたコンテキスト マネージャーを使用します。これにより、終了時にファイルが適切に閉じられるようになります。
以上がファイルを開くときに「os.listdir」によって「FileNotFoundError」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。