python zipfile压缩文件夹,python 7z压缩
目前常用的压缩和解压文件的格式有zip格式和7z格式。本文主要介绍Python压缩包处理模块zipfile和py7zr,供大家参考。
00-1010 I:zip file的常用操作1、压缩文件2、解压缩文件3、列出压缩包中的所有文件4、其他常用方法II:py7zr 1的常用操作、压缩文件2、解压缩文件。目前常用的压缩和解压缩文件的格式有zip格式和7z格式。今天就用一篇文章来掌握这两种压缩文件格式的操作。
目录
一:zipfile的常用操作
zipfile。ZipFile(文件[,模式[,压缩[,allowZip64]])
file参数表示文件的路径;mode参数指示打开zip文件的模式。有三种模式。
解压缩:R压缩:W附加压缩:A默认值为 R ,表示读取已有的zip文件,也可以是 W 或 A 。“w”表示创建新的zip文档或覆盖现有的zip文档,“A”表示进一步压缩。
让我们创建一个压缩文件result.zip,并压缩测试文件夹下的所有文件。
导入zip文件
导入操作系统
testdir= d : \ \ FTZ \ \ python _ tool \ \ result \ \ test
文件名=。/result.zip
z=zipfile。ZipFile(文件名,“w”)
对于os.listdir(testdir):中的d
写(d)
z .关闭
当然,以上也可以用的方法打开。
导入zip文件
导入操作系统
testdir= d : \ \ DPI \ \ python _ tool \ \ result \ \ test
文件名=。/result.zip
用zipfile。ZipFile(文件名,“w”)为z:
对于os.listdir(testdir):中的d
写(d)
z .关闭
1,压缩文件
导入zip文件
导入操作系统
testdir= d : \ \ FTZ \ \ python _ tool \ \ result \ \ test
文件名=。/result.zip
用zipfile。ZipFile(文件名,“r”)为z:
z.extractall(测试目录)
需要注意的是,有些压缩包是有解压密码的。此时,调用extractall时也支持密码输入。在python3中,解压文件的密码参数pwd接收的是一个二进制值,所以需要在前面加一个B。
z.extractall(testdir,pwd=bftz )
2,解压缩文件
导入zip文件
导入操作系统
testdir= d : \ \ DPI \ \ python _ tool \ \ result \ \ test
文件名=。/result.zip
用zipfile。ZipFile(文件名,“r”)为z:
files=z.namelist()
打印(文件)
结果如下,并返回一个列表:
3,列出压缩包里的所有文件
nbsp;4,其他常用的方法
import zipfileimport os
testdir = "D:\\ftz\\python_tool\\result\\test"
filename = "./result.zip"
with zipfile.ZipFile(filename, r) as z:
z.setpassword(bftz1) #设置zip文档的密码。
z.printdir() #将zip文档内的信息打印到控制台上。
data = z.read(file.yaml) #获取zip文档内指定文件的二进制数据
print(data)
info = z.getinfo(file.yaml) #方法返回的是一个ZipInfo对象,表示zip文档中相应文件的信息。它支持如下属性
print("获取文件名称:",info.filename)
print("获取文件最后修改时间:",info.date_time)
print("获取压缩类型:",info.compress_type)
print("获取压缩后的大小:",info.compress_size)
print("获取未压缩的文件大小:",info.file_size)
print("判断是否是压缩文件:",zipfile.is_zipfile(filename))
运行结果如下:
File Name Modified Size
data_yaml.yaml 2022-06-25 10:50:42 198
file.yaml 2022-06-25 10:13:46 123
vnfname.txt 2022-01-14 11:27:56 9320
b'\xe4\xb8\x80\xe7\xba\xa7\xe6\xa0\x87\xe9\xa2\x98:\n \xe4\xba\x8c\xe7\xba\xa7\xe6\xa0\x87\xe9\xa2\x981:\n b:1\n c:2\n a:3\n \xe4\xba\x8c\xe7\xba\xa7\xe6\xa0\x87\xe9\xa2\x982:\n f:7\n t:8\n z:9'
获取文件名称: file.yaml
获取文件最后修改时间: (2022, 6, 25, 10, 13, 46)
获取压缩类型: 0
获取压缩后的大小: 123
获取未压缩的文件大小: 123
判断是否是压缩文件: True
[Finished in 0.2s]
当然getinfo也支持其他的属性,下面给出比较全的属性和方法
ZipInfo.filename: 获取文件名称。ZipInfo.date_time: 获取文件最后修改时间。返回一个包含6个元素的元组:(年, 月, 日, 时, 分, 秒)
ZipInfo.compress_type: 压缩类型。
ZipInfo.comment: 文档说明。
ZipInfo.extr: 扩展项数据。
ZipInfo.create_system: 获取创建该zip文档的系统。
ZipInfo.create_version: 获取 创建zip文档的PKZIP版本。
ZipInfo.extract_version: 获取 解压zip文档所需的PKZIP版本。
ZipInfo.reserved: 预留字段,当前实现总是返回0。
ZipInfo.flag_bits: zip标志位。
ZipInfo.volume: 文件头的卷标。
ZipInfo.internal_attr: 内部属性。
ZipInfo.external_attr: 外部属性。
ZipInfo.header_offset: 文件头偏移位。
ZipInfo.CRC: 未压缩文件的CRC-32。
ZipInfo.compress_size: 获取压缩后的大小。
ZipInfo.file_size: 获取未压缩的文件大小。
二:py7zr的常用操作
1,压缩文件
import py7zrwith py7zr.SevenZipFile(target.7z, w) as archive:
archive.writeall(/path/to/base_dir, base)
如果想设置密码压缩
import py7zrwith py7zr.SevenZipFile(target.7z, w, password=secret) as archive:
archive.writeall(/path/to/base_dir, base)
2,解压缩文件
import py7zrarchive = py7zr.SevenZipFile(sample.7z, mode=r)
archive.extractall(path="/tmp")
archive.close()
也支持with模式
import py7zrwith py7zr.SevenZipFile(sample.7z, mode=r) as z:
z.extractall()
with py7zr.SevenZipFile(target.7z, w) as z:
z.writeall(./base_dir)
py7z也支持提取某个文件或者符合正则匹配的文件
import py7zrimport re
filter_pattern = re.compile(r<your/target/file_and_directories/regex/expression>)
with SevenZipFile(archive.7z, r) as archive:
allfiles = archive.getnames()
selective_files = [f for f in allfiles if filter_pattern.match(f)]
archive.extract(targets=selective_files)
支持解压缩加密的7z文件
import py7zrwith py7zr.SevenZipFile(encrypted.7z, mode=r, password=secret) as z:
z.extractall()
到此这篇关于Python压缩包处理模块zipfile和py7zr的文章就介绍到这了,更多相关Pythonzipfile和py7zr压缩包模块内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。