Zip
模块安装
pip install zipfile
使用
import zipfile
# 打开zip文件
zipfileObj = zipfile.ZipFile("./tmp.zip")
# with上下文
with zipfile.ZipFile("./tmp.zip") as zipfileObj:
pass
常用方法
ZipFile类
- ZipFile.close(): 关闭文件,结束时必须要有
- ZipFile.getinfo(name): 获取zip文档内指定文件的信息。返回一个zipfile.ZipInfo对象,它包括文件的详细信息。
- ZipFile.infolist(): 获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表。
- ZipFile.namelist(): 获取zip文档内所有文件的名称列表。
- ZipFile.extract(member[, path[, pwd]]):将zip文档内的指定文件解压到当前目录。
- ZipFile.extractall([path[, members[, pwd]]]): 解压zip文档中的所有文件到当前目录。
- ZipFile.printdir(): 将zip文档内的信息打印到控制台上。
- ZipFile.setpassword(pwd): 设置zip文档的密码,这个方法我用的时候不好使,暂时没找到问题所在,建议要加密码使用 Python调用linux系统命令加密,或者调用windows里安装的压缩软件加密。
- ZipFile.read(name[, pwd]): 获取zip文档内指定文件的二进制数据。
- ZipFile.write(filename[, arcname[, compress_type]]):将指定文件添加到zip文档中。
- ZipFile.writestr(zinfo_or_arcname, bytes): writestr()支持将二进制数据直接写入到压缩文档。
ZipInfo 类
- 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: 获取未压缩的文件大小。
Gzip
gzip读取文件:
import gzip
with gzip.open('file.txt.gz', 'rb') as f:
file_content = f.read()
gzip创建文件:
import gzip
content = "Lots of content here"
with gzip.open('file.txt.gz', 'wb') as f:
f.write(content)
gzip向已存在文件压入数据:
import gzip
import shutil
with open('file.txt', 'rb') as f_in, gzip.open('file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
tar.gz
使用
import tarfile
# with上下文
with tarfile.open() as tar:
pass
常用方法
- is_tarfile()可以用来判断文件是否是tarfile支持的文件格式
- list()列出文件列表并在stdout显示
- getmembers()可以用来获取成员列表,返回TarInfo实例组成的一个列表,每个TarInfo实例可以查看其name,size,mtime等属性。
- getnames()可以用来从压缩包中读取文件名,返回文件名组成的文件清单。
- getmember()生成一个TarInfo实例子(获取一个成员的信息)
- extract()用来提取单个文件,输入文件名称和解压后的路径。
- extractall()用来提取所有文件,传入解压后的路径,不需要传入文件名称。
- extractfile()用来解压单个文件,输入文件名称,不需要输入解压后的路径,因为生成的是个文件实例,并不是直接解压文件。
此时要以写的方式打开
tarfile.open(name='logo.tar',mode='w')
add()方法添加要压缩的文件