2011-09-23 97 views
1
a.zip--- 
     -- b.txt 
     -- c.txt 
     -- d.txt 

的方法來處理與Python的zip文件,如何處理壓縮文件與Python

我可以在壓縮文件展開到一個臨時目錄,然後處理每個txt文件一個輪空一個

這裏,我更感興趣的是知道python是否提供這樣一種方式,以便我不必手動擴展zip文件,只需簡單地將zip文件視爲專用文件夾並相應地處理每個txt。

+0

所有這些都是重複:http://stackoverflow.com/search?q=python+zipfile –

+0

可能的重複[如何從遠程Zip存檔通過HTTP使用Python讀取選定的文件?](http:///stackoverflow.com/questions/94490/how-do-i-read-selected-files-from-a-remote-zip-archive-over-http-using-python) –

+1

或者可能是這樣的副本:http:/ /stackoverflow.com/questions/4890860/make-in-memory-copy-of-a-zip-by-iterrating-over-each-file-of-the-input –

回答

11

Python standard library可以幫到你。

道格·海爾曼博客有關選擇的模塊非常豐富:http://www.doughellmann.com/PyMOTW/zipfile/

要在戴維斯的評論:從Python 2.7版的zip文件的對象上提供了一個上下文管理器,所以推薦的方法是:

import zipfile 
with zipfile.ZipFile("zipfile.zip", "r") as f: 
    for name in f.namelist(): 
     data = f.read(name) 
     print name, len(data), repr(data[:10]) 

由於with語句,將自動調用close方法。如果您寫入文件,這一點尤其重要。

3

是的,你可以自己處理每個文件。看看教程here。對於你的需求,你可以做這樣的事情從教程這個例子:

import zipfile 
file = zipfile.ZipFile("zipfile.zip", "r") 
for name in file.namelist(): 
    data = file.read(name) 
    print name, len(data), repr(data[:10]) 

這將遍歷在檔案中的每個文件,並打印出它的名稱,長度和前10個字節。

綜合參考文檔是here

+1

使用文件作爲變量名稱與內置文件衝突類型。 – rocksportrocker