如何仅列出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