ホームページ  >  記事  >  バックエンド開発  >  ファイルを開くときに「os.listdir」によって「FileNotFoundError」が発生するのはなぜですか?

ファイルを開くときに「os.listdir」によって「FileNotFoundError」が発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-20 03:54:01818ブラウズ

Why Does `os.listdir` Cause `FileNotFoundError` When Opening Files?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。