2013-03-20 148 views
1

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

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

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

你尝试只是改变你的最后一行打印线[1]? (并且你在for循环行末尾缺少一个冒号,但是我认为这只是一个编辑错误,当你在stackoverflow上准备这个时) – 2013-03-20 16:28:16

+0

感谢您指出错字。 当试图行[1] – soltreas 2013-03-20 16:36:37

回答

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] 

(你的原代码循环无故行列表,而不是只打印2日)

+0

Ace时,我得到一个“IndexError:字符串索引超出范围”,这个工程! 很多人都非常感谢Wooble。 – soltreas 2013-03-20 16:45:25