在python中读取.zip存档中的所有文件

在python中读取.zip存档中的所有文件,python,zipfile,Python,Zipfile,我正在尝试使用glob()方法读取名为data1.zip的.zip存档中的所有文件 import glob from zipfile import ZipFile archive = ZipFile('data1.zip','r') files = archive.read(glob.glob('*.jpg')) 错误消息: TypeError: unhashable type: 'list' 我使用的问题解决方案是: files = [archive.read(str(i+1)+'.jp

我正在尝试使用
glob()
方法读取名为
data1.zip
.zip
存档中的所有文件

import glob
from zipfile import ZipFile

archive = ZipFile('data1.zip','r')
files = archive.read(glob.glob('*.jpg'))
错误消息:

TypeError: unhashable type: 'list'
我使用的问题解决方案是:

files = [archive.read(str(i+1)+'.jpg') for i in range(100)]
这很糟糕,因为我假设我的文件名为
1.jpg
2.jpg
,等等


有没有更好的方法使用python最佳实践来做到这一点?不需要使用
glob()
glob
不查看您的归档文件,它只会给您当前工作目录中的
jpg
文件列表

ZipFile
已经有返回存档文件信息的方法:
namelist
返回名称,
infolist
返回包含元数据的
ZipInfo
对象

您是否正在寻找:

archive = ZipFile('data1.zip', 'r')
files = archive.namelist()
或者如果您只需要
.jpg
文件:

files = [name for name in archive.namelist() if name.endswith('.jpg')]
或者,如果要读取每个文件的所有内容:

files = [archive.read(name) for name in archive.namelist()]
尽管我可能更愿意将名称映射到内容:

files = {name: archive.read(name) for name in archive.namelist()}
这样,您就可以访问以下内容:

files['1.jpg']

或者使用
files.keys()
等获取文件列表。

glob
不会查看您的归档文件,它只会为您提供当前工作目录中的
jpg
文件列表

ZipFile
已经有返回存档文件信息的方法:
namelist
返回名称,
infolist
返回包含元数据的
ZipInfo
对象

您是否正在寻找:

archive = ZipFile('data1.zip', 'r')
files = archive.namelist()
或者如果您只需要
.jpg
文件:

files = [name for name in archive.namelist() if name.endswith('.jpg')]
或者,如果要读取每个文件的所有内容:

files = [archive.read(name) for name in archive.namelist()]
尽管我可能更愿意将名称映射到内容:

files = {name: archive.read(name) for name in archive.namelist()}
这样,您就可以访问以下内容:

files['1.jpg']
或者使用
files.keys()
等获取文件列表。

您可以使用并过滤掉所有可以使用的
jpg
文件,然后过滤掉所有
jpg
文件