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')

发布了396 篇原创文章 · 获赞 172 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/hxxjxw/article/details/104805349