【问题标题】:Iterdecode skipping lines from fileIterdecode 从文件中跳过行
【发布时间】:2019-01-28 10:50:50
【问题描述】:

当从 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 读取。

谢谢。

【问题讨论】:

  • file = zipobj.open(current_file) 你的意思是? current 此处未定义
  • 好的,谢谢。我编辑了文件。

标签: python python-3.x


【解决方案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)

现在所有行都正确打印了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多