在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
文件