从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中读取。
谢谢。
答案 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)
现在所有行均已正确打印。