python:从zip存档中的所有文件中提取特定行

时间:2013-03-20 16:26:16

标签: python zip

我需要从zip存档中包含的所有文件中提取特定行(第二行)。我的尝试(显然)没有用。我能找到的与此相关的一切都涉及使用特定的字符串/变量来缩小要从存档文件中提取的内容 - 我不能在我的情况下使用它。

我最接近的是从ALL文件中提取所有行。

import zipfile

with zipfile.ZipFile() as input_zipfile:
    for f in input_zipfile.namelist():
         for line in input_zipfile.read(f).split("\n"):
               print line

理想情况下,我希望使用类似.readlines()然后print line[1]的内容来获取每个文件的第二行。但这不适用于zipfiles。我是否需要创建临时文件并使用该语法,或者有解决方法吗?

我尝试将最后一行更改为print line[1],但后来我得到IndexError

作为旁注,文件不大(4-12行)。所以我想制作临时文件并不是不可能的,但它看起来太迂回而且不够优雅。

1 个答案:

答案 0 :(得分:0)

这将有效:

import zipfile

with zipfile.ZipFile() as input_zipfile:
    for f in input_zipfile.namelist():
        lines = input_zipfile.read(f).split("\n")
        print lines[1]

(您的原始代码无缘无故地遍历行列表,而不是仅打印第二行)