2
with open("movies.txt") as infile:
    for line in infile:
        list1 = [ ]
        for temp in line.split(':'):
            list1.append(temp)
        if (list1[0] == 'product/productId'):
            if(list1[1] != product):
                product = list1[1]
                f1=open(list1[1],'w')
        elif(list1[0] == 'review/text'):
            if (list1[1] != product):
                f1.write(list1[1] + os.linesep)

「with open(filename) as file:」の代わりに「for line in filename」を使用するとすぐに消えるioerrorが発生し続けます助けてください

私はすでにこのページのすべての解決策を試しました Pythonで大きなテキストファイルをメモリにロードせずに1行ずつ読むが、役に立たない

このコードを使用すると、完全に正常に動作します...

for line in file_contents('movies.txt').splitlines():
    list1 = [ ]
    for temp in line.split(":"):
        list1.append(temp)
    for temp2 in line.split(":"):
        list1.append(temp2)
    if (list1[1] != product):
        if (list1[0] == 'product/productId'):
            product = list1[1]
            f1 = open(list1[1],'w')
        elif(list1[0] == 'review/text'):
            f1.write(list1[1] + os.linesep)

しかし、投稿した最初のコードを使用する必要があります..

4

3 に答える 3

3

ファイルから行を読み取っていると、末尾の改行文字が取得されます\n。これは、投稿したトレースバックで確認できます。これが問題の原因であると思います。

.strip()ファイルを開く前に、不要な空白と改行文字を削除するために使用します。ファイル名だけでなく、作業したいファイルへの完全なパスを提供する必要がある場合もあります。

于 2013-06-13T10:52:03.877 に答える
0

ファイル名として無効である可能性line1[1]があります。たとえば、空の文字列です。

于 2013-06-13T10:07:29.760 に答える