Python使用zipfile处理压缩文件
读取zip文件
namelist()
方法,可以返回zip文件中的所有文件夹和文件的字符串列表。getinfo()
方法,可以返回一个特定文件的ZipInfo对象,该对象有file_size
,compress_size
等属性。
>>> import zipfile
>>> zfile = zipfile.ZipFile('folderC.zip')
>>> zfile.namelist()
['folderC/', 'folderC/a.txt', 'folderC/folderD/', 'folderC/folderD/a.py', 'folderC/folderD/b.py', 'folderC/folderE/', 'folderC/folderE/c.py', 'folderC/folderE/d.py', 'folderC/folderE/folderE1/', 'folderC/folderE/folderE1/f.py', 'folderC/new_b.txt']
>>> ainfo = zfile.getinfo('folderC/a.txt')
>>> ainfo.file_size
265
>>> ainfo.compress_size
174
>>> zfile.close()
从zip中解压缩文件
# 解压所有文件
>>> zfile = zipfile.ZipFile('folderC.zip')
>>> zfile.extractall('extracted_folder') # 传递一个路径,把压缩文件解压到该路径(若不存在,会创建),如果不传递,就解压到当前目录。
# 解压(提取)单个文件
>>> zfile.extract('folderC/a.txt','extracted_a') # 解压一个文件,指定目录
'extracted_a\\folderC\\a.txt'
>>> zfile.close()
创建和添加到zip文件
>>> zfile = zipfile.ZipFile('new.zip','w') # 'w'是写模式,会覆盖,'a'是添加模式,不会覆盖。
>>> zfile.write('helloworld.py', compress_type=zipfile.ZIP_DEFLATED) # 传递文件可以,传递文件夹好像不行。
# compress_type=zipfile.ZIP_DEFLATED,deflate压缩算法普遍适用。
>>> zfile.close()
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏