python创建和读取压缩包(zip类型)

读取压缩包内文件

zipfile().ZipFile(), .namelist()

import zipfile

with zipfile.ZipFile('Desktop.zip','r') as zipobj:
	print(zipobj.namelist())

最好不要有中文,否则容易出乱码

 

处理压缩包里的中文

.encode('cp437').decode('gbk')

import zipfile

with zipfile.ZipFile('Desktop.zip','r') as zipobj:
	for filename in zipobj.namelist():
		print(filename.encode('cp437').decode('gbk'))

 

读取压缩包内文件信息

zipobj.getinfo()

import zipfile

with zipfile.ZipFile('Desktop.zip','r') as zipobj:
	for file_name in zipobj.namelist():
		info = zipobj.getinfo(file_name)
		file_name = file_name.encode('cp437').decode('gbk')
		print(file_name, info.file_size, info.compress_size)

.file_size是原始文件大小

.compress_size是压缩后大小

输出单位是字节

 

解压压缩包

.extractall(path=解压到哪个位置)

import zipfile

with zipfile.ZipFile('Desktop.zip','r') as zipobj:
	zipobj.extractall('./Desktop/')

解决中文乱码

解压完了后重写文件名

import os
import zipfile

filePath = 'Desktop.zip'
release_file_dir = 'D:/py/Desktop/'

zip_file_contents = zipfile.ZipFile(filePath, 'r')
zip_file_contents.extractall(release_file_dir)#解压缩ZIP文件
for file in zip_file_contents.namelist():
    filename = file.encode('cp437').decode('gbk')#先使用cp437编码,然后再使用gbk解码
    print(filename)
    os.chdir(release_file_dir)#切换到目标目录
    os.rename(file,filename)#重命名文件

 

创建压缩包

zipobj.write(要压缩成的文件名)

import zipfile

file_list = ['mnist_backward.py', 'mnist_forward.py','AJUN水印.jpg']
with zipfile.ZipFile('py.zip','w') as zipobj:
	for file in file_list:
		zipobj.write(file)

 

向已有的压缩包里添加文件

zipobj.write(待添加的文件名)

import zipfile

with zipfile.ZipFile('py.zip','a') as zipobj:
	zipobj.write('my.png')

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值