9

現在のディレクトリにいる間、パスを使用せずに別のディレクトリからファイルを開く必要があります。

以下のコードを実行すると:

for file in os.listdir(sub_dir):
    f = open(file, "r")
    lines = f.readlines()
    for line in lines:
        line.replace("dst=", ", ")
        line.replace("proto=", ", ")
        line.replace("dpt=", ", ")

FileNotFoundError: [Errno 2] No such file or directory:サブディレクトリにあるため、エラーメッセージが表示されます。

質問: でファイルを見つけて開くために使用できる os コマンドはありますsub_dirか?

ありがとう!-これが繰り返しの場合はお知らせください。検索しても見つかりませんでしたが、見逃した可能性があります。

4

3 に答える 3

13

os.listdir()パスなしでファイル名のみをリストします。これらをsub_dir再度前に追加します。

for filename in os.listdir(sub_dir):
    f = open(os.path.join(sub_dir, filename), "r")

ファイルの行をループするだけの場合は、ファイル自体をループするだけです。using を使用withすると、完了時にファイルが確実に閉じられます。最後になりましたが、値自体を変更するのではなく、新しい文字列値をstr.replace() 返すため、その戻り値を保存する必要があります。

for filename in os.listdir(sub_dir):
    with open(os.path.join(sub_dir, filename), "r") as f:
        for line in f:
            line = line.replace("dst=", ", ")
            line = line.replace("proto=", ", ")
            line = line.replace("dpt=", ", ")
于 2013-08-22T20:13:55.940 に答える
11

これらのファイルが現在のディレクトリにない場合は、フル パスを指定する必要があります。

f = open( os.path.join(sub_dir, file) )

これはPythonでファイルオブジェクトを作成するために使用されるためfile、おそらく変数名として使用しません。filename

于 2013-08-22T20:14:15.867 に答える