Python—Zip处理压缩文件

用python操作zip文件的打包压缩与解压,可以使用zipfile模块。zipfile中包含ZipFile,PyZipFile和ZipInfo三个对象,ZipFile和ZipInfo最常用。其中:
ZipFile:创建和读取zip文件
ZipInfo:存储zip文件中每个文件的信息

1、ZipFile对象

import zipfile

# 1、创建一个ZipFile对象,可以是r,a,w模式创建
with zipfile.ZipFile('test.zip','w') as f:
    # 向zip压缩文件中添加新文件
    f.write('test.csv')
    f.write('盗墓笔记.txt')

# 2、打开一个zip文件
z=zipfile.ZipFile('test.zip','r')

# 3、返回zip文件中文件的字节,果果有password,需制定pwd参数
a1 = z.read('test.csv')
print("a1:",a1)

# 4、代开zip文件中的一个文件
z.open("盗墓笔记.txt")

# 5、关闭ZipFile对象
# z.close()

# 6、返回一个包含存档成员名称信息的ZipInfo对象,调用getinfo()存档中当前未包
# 含的名称将引发一个KeyError
a2 = z.getinfo('test.csv')
print("a2:",a2)

# 7、返回一个包含存档成员名称列表
a3 = z.namelist()
print("a3:",a3)

# 8、返回一个包含全部存档成员信息的ZipInfo对象的列表
a4 = z.infolist()
print("a4:",a4)

# 9、将pwd设置为默认密码以提取加密文件
z.setpassword(b"123")

# 10、将成员从zip存档中解压到当前工作目录; member必须是其全名或ZipInfo对象,
# path为指定的解压路径,pwd为解压密码
z.extract(member='test.csv', path='data/demo', pwd=b"123")

# 11、将成员从zip存档中解压到当前工作目录; member必须是ZipFile.namelist()的
# 子集列表或元祖,path为指定的解压路径,pwd为解压密码
z.extractall(path='data/demo', members=['盗墓笔记.txt'], pwd=b"123")

输出>>>
a1: b'id,name,age\r\n1,\xf7\xbc\xf7\xc3\xc6\xef\xca\xbf,500\r\n2,\xe7\xb3\xba\xec\xc5\xae\xce\xd7,20\r\n3,\xc3\xc0\xb9\xfa\xb6\xd3\xb3\xa4,200\r\n'
a2: <ZipInfo filename='test.csv' filemode='-rw-rw-rw-' file_size=60>
a3: ['test.csv', '盗墓笔记.txt']
a4: [<ZipInfo filename='test.csv' filemode='-rw-rw-rw-' file_size=60>, <ZipInfo filename='盗墓笔记.txt' filemode='-rw-rw-rw-' file_size=8932>]

2、ZipInfo对象

ZipInfo对象由ZipFile对象的getinfo()infolist()方法返回。每个对象都存储有关ZIP存档的单个成员的信息,具体有以下常用属性

z=zipfile.ZipFile('test.zip','r')
file = z.getinfo('test.csv')
# 1、存档中文件的名称
file_name = file.filename
print(file_name)

# 2、上次修改存档成员的时间和日期,是一个六个值的元祖(年,月,日,时,分,秒)
datetime = file.date_time
print(datetime)

# 3、压缩数据的大小
compress_size= file.compress_size
print(compress_size)

# 4、未压缩文件的大小
file_size = file.file_size
print(file_size)

输出>>>
test.csv
(2019, 8, 18, 1, 33, 40)
60
60

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八戒无戒i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值