Pyt*_*van 7 python directory zipfile
如何仅列出zip存档中的文件夹?这将列出存档中的每个folfder和文件:
import zipfile
file = zipfile.ZipFile("samples/sample.zip", "r")
for name in file.namelist():
print name
Run Code Online (Sandbox Code Playgroud)
谢谢.
小智 8
我不认为以前的答案是跨平台兼容的,因为他们假设 pathep/与某些评论中所述一样。他们也忽略了子目录(这对Pythonpadavan可能重要也可能无关紧要......问题并不完全清楚)。关于什么:
import os
import zipfile
z = zipfile.Zipfile('some.zip', 'r')
dirs = list(set([os.path.dirname(x) for x in z.namelist()]))
Run Code Online (Sandbox Code Playgroud)
如果您真的只想要顶级目录,请将其与agroszer的答案结合起来进行最后一步:
topdirs = [os.path.split(x)[0] for x in dirs]
Run Code Online (Sandbox Code Playgroud)
(当然,最后两步可以合并:)
一种方法可能是:
>>> [x for x in file.namelist() if x.endswith('/')]
<<< ['folder/', 'folder2/']
Run Code Online (Sandbox Code Playgroud)
在 python 3 中,这假设绝对路径被输入到ZipFile:
from zipfile import ZipFile
zip_f = ZipFile("./Filename.zip")
# All directories:
for f in zip_f.namelist():
zinfo = zip_f.getinfo(f)
if(zinfo.is_dir()):
print(f)
# Only root directories:
root_dirs = []
for f in zip_f.namelist():
zinfo = zip_f.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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6695 次 |
| 最近记录: |