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


73

我有一个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()

Answers:


101

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


4
或者,infolist()如果您想获取其他详细信息,请使用;例如修改日期或压缩日期
红豌豆2015年

8
是否有一种方法将文件名作为迭代器而不是列表返回?
Elliott

gist.github.com/berezovskyi/c440125e10fc013a36f6f5feb8bc3117是我为自己写的使用发电机的简短技巧,例如for f in itertar(tarfile):
berezovskyi

20
import zipfile

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

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


2
我收到一条错误消息,说“存档中没有名为“ <文件名>”的项目”。请注意,我不知道压缩文件的名称是什么(它与zip存档的名称不同)。
David542

20
import zipfile

zip = zipfile.ZipFile('filename.zip')

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


# extract a specific file from zip 
f = zip.open("file_inside_zip.txt")
content = f.read()
# save the extraced file 
f = open('file_inside_zip.extracted.txt', 'wb')
f.write(content)
f.close()
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.