2016-09-21 16 views
1

在Python中,我們可以獲取zip文件中所有文件的列表,而無需使用下面的代碼解壓zip文件。在zip文件中遞歸列出所有目錄,而無需在python中解壓縮

import zipfile 
zip_ref = zipfile.ZipFile(zipfilepath, 'r') 
    for file in zip_ref.namelist(): 
     print file 

同樣,有沒有辦法在不提取zipfile的情況下獲取zip文件中所有目錄和子目錄的列表?

+0

我不相信'zipfile'具有這種能力。您理論上可以使用'zlib'並嘗試自己解析「[中央目錄](https://en.wikipedia.org/wiki/Zip_(file_format)#Structure)」,但除非這些文件過大,並且您有其中很多人,我不會去那麼麻煩。我會繼續尋找更合理的soln。雖然 – Aaron

+1

試過['ZipFile.infolist'](https://docs.python.org/2/library/zipfile.html#zipfile.ZipFile.infolist)? – metatoaster

+0

@metatoaster我做的一個快速測試表明,這甚至以可預測的順序(深度第一個字母)確認了文件嗎?拒絕?想法? – Aaron

回答

1
import zipfile 

with zipfile.ZipFile(zipfilepath, 'r') as myzip: 
    print(myzip.printdir()) 
0

謝謝大家的幫助。

import zipfile 

subdirs_list = [] 
zip_ref = zipfile.ZipFile('C:/Download/sample.zip', 'r') 
for dir in zip_ref.namelist(): 
    if dir.endswith('/'): 
     subdirs_list.append(os.path.basename(os.path.normpath(dir))) 

print subdirs_list 

與上面的代碼,我就可以讓我的zip文件中的所有目錄和subdirectoies列表而不提取sample.zip。

相關問題