如何僅列出zip壓縮文件夾中的文件夾? 這將列出檔案中的每一個倒帶器和文件:如何在Python中列出zip文件夾中的文件夾?
import zipfile
file = zipfile.ZipFile("samples/sample.zip", "r")
for name in file.namelist():
print name
謝謝。
如何僅列出zip壓縮文件夾中的文件夾? 這將列出檔案中的每一個倒帶器和文件:如何在Python中列出zip文件夾中的文件夾?
import zipfile
file = zipfile.ZipFile("samples/sample.zip", "r")
for name in file.namelist():
print name
謝謝。
一種方式是做:
>>> [x for x in file.namelist() if x.endswith('/')]
<<< ['folder/', 'folder2/']
更
set([os.path.split(x)[0] for x in zf.namelist() if '/' in x])
因爲Python的zip文件並不存儲只是
我不認爲以前的答案的文件夾是跨平臺兼容的,因爲他們假設pathsep爲/
,如某些評論中所述。他們也忽略子目錄(這可能會或可能不會影響Pythonpadavan ...不完全清楚的問題)。怎麼樣:
import os
import zipfile
z = zipfile.Zipfile('some.zip', 'r')
dirs = list(set([os.path.dirname(x) for x in z.namelist()]))
如果你真的只是想頂級目錄,然後用agroszer的回答結合本作最後一步:
topdirs = [os.path.split(x)[0] for x in dirs]
(當然,最後兩個步驟可能是合併:)
在Python 3:
from zipfile import ZipFile
# All directories:
for f in zip_ref.namelist():
zinfo = zip_ref.getinfo(f)
if(zinfo.is_dir()):
print(f)
# Only root directories:
root_dirs = []
zip_ref = ZipFile("ZipFile.zip")
for f in zip_ref.namelist():
zinfo = zip_ref.getinfo(f)
if zinfo.is_dir():
# This is will work in any OS because the zip format
# specifies a forward slash.
r_dir = f.split('/')
r_dir = r_dir[0]
if r_dir not in root_dirs:
root_dirs.append(r_dir)
for d in root_dirs:
print(d)
我可以得到完整的列表otherways到所需的文件夾列表o,但我有更多的GB與許多10000個文件夾zip.I只需要更快的搜索。 – Pythonpadavan
@Pythonpadavan:有一個解決方案,但它不是pythonic的做法,它只會在Linux中工作。'>>> os.system(「unzip -l zip.zip | grep/$」) 0 2011-06 -28 22:59 zip/one/ 0'用你的'filename'替換'zip.zip' – Kracekumar
謝謝但是操作系統給出了,猜猜看是什麼;是Windows。 – Pythonpadavan