获取 zip 文件中包含的文件的文件列表

Posted

技术标签:

【中文标题】获取 zip 文件中包含的文件的文件列表【英文标题】:get file list of files contained in a zip file 【发布时间】:2012-02-09 07:33:11 【问题描述】:

我有一个 zip 存档:my_zip.zip里面是一个txt文件,我不知道名字。我正在看Python的zipfile模块(http://docs.python.org/library/zipfile.html),但无法理解是什么我正在努力。

我将如何执行相当于“双击”zip 文件以获取 txt 文件然后使用 txt 文件的操作:

>>> f = open('my_txt_file.txt','r')
>>> contents = f.read()

【问题讨论】:

【参考方案1】:
import zipfile

# zip file handler  
zip = zipfile.ZipFile('filename.zip')

# list available files in the container
print (zip.namelist())

# extract a specific file from the zip container
f = zip.open("file_inside_zip.txt")

# save the extraced file 
content = f.read()
f = open('file_inside_zip.extracted.txt', 'wb')
f.write(content)
f.close()

【讨论】:

【参考方案2】:
import zipfile

zip=zipfile.ZipFile('my_zip.zip')
f=zip.open('my_txt_file.txt')
contents=f.read()
f.close()

您可以查看文档here。特别是,namelist() 方法将为您提供 zip 文件成员的名称。

【讨论】:

我收到一条错误消息,提示“存档中没有名为 '' 的项目”。请注意,我不知道压缩文件的名称是什么(它与 zip 存档的名称不同)。【参考方案3】:

您需要的是ZipFile.namelist(),它将为您提供存档所有内容的列表,然后您可以通过zip.open('filename_you_discover') 获取该文件的内容。

【讨论】:

如果您想获取其他详细信息,请使用infolist();比如修改日期或压缩大小 有没有将文件名作为迭代器而不是列表返回的方法? gist.github.com/berezovskyi/c440125e10fc013a36f6f5feb8bc3117 是我为自己编写的一个简短的 hack,用于将生成器用作 for f in itertar(tarfile):

以上是关于获取 zip 文件中包含的文件的文件列表的主要内容,如果未能解决你的问题,请参考以下文章

如何传递文件中包含的命令行参数并保留该文件的名称?

使用 python 查看 .gz 存档中包含的文件

如何获取 zip 文件中所有目录的列表

从 ZIP 存档中导出文件列表而不解压缩

WebStorm 内置 Web 服务器为 index.html 中包含的每个 css 和 js 文件获取 404

如何获取可执行文件的字符串转储?