2013-03-20 147 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