在 zipfile 中递归列出所有目录而不在 python 中提取
Posted
技术标签:
【中文标题】在 zipfile 中递归列出所有目录而不在 python 中提取【英文标题】:Listing all directories recursively within the zipfile without extracting in python 【发布时间】:2016-09-21 13:09:20 【问题描述】:在 Python 中,我们可以使用以下代码获取 zipfile 中所有文件的列表,而无需提取 zip 文件。
import zipfile
zip_ref = zipfile.ZipFile(zipfilepath, 'r')
for file in zip_ref.namelist():
print file
同样有没有办法在不提取 zipfile 的情况下获取 zipfile 中所有目录和子目录的列表?
【问题讨论】:
我不相信zipfile
有这种能力。理论上你可以使用zlib
并尝试自己解析“central directory”,但除非这些文件非常大而且你有很多文件,否则我不会那么麻烦。我会继续寻找更合理的解决方案。虽然
试过ZipFile.infolist
?
@metatoaster 我做的快速测试表明这甚至会以可预测的顺序(深度优先字母顺序)吐出文件确认?否定?想法?
没有“解压 zip 文件”是什么意思?这些方法提供了一个列表,为了生成列表,必须首先提取清单......
【参考方案1】:
import zipfile
with zipfile.ZipFile(zipfilepath, 'r') as myzip:
print(myzip.printdir())
【讨论】:
【参考方案2】:感谢大家的帮助。
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
使用上面的代码,我可以在我的 zipfile 中获取所有目录和子目录的列表,而无需提取 sample.zip。
【讨论】:
以上是关于在 zipfile 中递归列出所有目录而不在 python 中提取的主要内容,如果未能解决你的问题,请参考以下文章
Directory.CreateDirectory() 不在 ZipFile 中创建文件夹
如何在 Java 中使用 ZipFile 类递归打开所有文件,包括文件夹下的文件