Iterdecode从文件中跳过行

时间:2019-01-28 10:50:51

标签: python python-3.x

从zip读取.txt文件并使用iterdecode逐行读取时,itercode会跳过非空的奇数行。

with zipfile.ZipFile('path/file.zip', 'r') as zipobj:
    for current_file in zipobj.namelist():
        file = zipobj.open(current_file)
        for line in codecs.iterdecode(file, 'latin-1'): #Latin-1 for accents
            print(line)

我的文件是.txt文件,对于每个文件:

line 1
line 2
line 3
line 4
line 5, etc.

print(line) gives:

line 1
line 3
line 5, etc.

在我使用file.open(没有iterdecodes)之前,它工作正常,但是我需要从.zip中读取。

谢谢。

1 个答案:

答案 0 :(得分:1)

我使用this post的答案之一解决了这个问题。我将在此处发布该解决方案,以及在其他帖子中并不太明显(无论如何都不是公认的解决方案)。

import io
with zipfile.ZipFile('path/file.zip', 'r') as zipobj:
    for name in zipobj.namelist():
        with zipobj.open(name) as readfile:
            for line in io.TextIOWrapper(readfile, 'latin-1'):
                print(line)

现在所有行均已正确打印。