0

フォルダー内のファイルを読み込もうとしていますが、フォルダー内のファイル数が固定されていないためですが、テキストフォルダーが3つある場合、4つのテキストファイルすべてが4つの場合、3つのファイルすべてを読み取る必要があります。

これが私が使用しようとしているコードですが、IOErrorが発生します:

for i in os.listdir("./RecordFolder"):
    print i

出力: record1.txt record2.txt

問題はファイルの読み取りです。

for files in os.listdir("./RecordFolder"):
    filecontent = open(files).readlines()
    for lines in filecontent:
    print lines

出力:

IOError: [Errno 2] No such file or directory: 'record.txt'

ここで助けが必要です、ありがとう

4

2 に答える 2

10

この関数os.listdir()は、フル パスではなくファイル名のみを返すためos.path.join()、ディレクトリ名を追加するために使用する必要があります。

directory = "./RecordFolder"
for filename in os.listdir(directory):
    with open(os.path.join(directory, filename)) as f:
        for line in f:
            print line

(また、ファイルの行を単純に反復処理するために使用するべきではないことfile.readlines()、およびコードがファイルを閉じることができないことにも注意してください。これらの問題は上記のコードで修正されています。)

于 2012-08-03T13:40:40.007 に答える
2

os.listdirフォルダー内のファイルの名前のみを返します。パス全体ではありません。

次のようなものが必要です。

directory = os.path.join(os.curdir, "RecordFolder")
for files in os.listdir(directory):
    filecontent = open( os.path.join(directory, files) ).readlines()
    for lines in filecontent:
        print lines

しかし、これはファイルから行を取得する最良の方法ではありません。Python コンテキスト マネージャーを調べてください。具体的には次のとおりです。

with open(filename) as f:
     for line in f:
         print line

これにより、ファイルが適切に閉じられることが保証されます (エラーが発生した場合でも、インタープリター自体のセグメンテーション違反やそのような奇妙なものを除きます)。

于 2012-08-03T13:40:24.217 に答える