from zipfile import Zipfile
# 获取zip文档内所有文件的信息,返回一个ZipInfo的列表。
ZipFile.infolist()
# 获取zip文档内指定文件的信息,返回一个包括文件详细信息的ZipInfo对象。
ZipFile.getinfo(name)
# 获取zip文档内所有文件的名称列表
ZipFile.namelist()
# 获取zip文档中相应文件的信息,返回一个ZipInfo对象
ZipFile.getinfo(name)
支持如下属性:
ZipInfo.filename 获取文件名称
ZipInfo.date_time 获取文件最后修改时间
ZipInfo.compress_type 压缩类型
ZipInfo.comment 文档说明
ZipInfo.extr 扩展项数据
ZipInfo.create_system 获取创建该zip文档的系统
ZipInfo.create_version 获取、创建zip文档的PKZIP版本
ZipInfo.extract_versio 获取、解压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 获取未压缩的文件大小
# 将zip文档内的指定文件解压到当前目录
ZipFile.extract(member[, path[, pwd]])
# member 指定要解压的文件名称或对应的ZipInfo对象
# path 指定解析文件保存的文件夹
# pwd 解压密码
# 将保存在程序根目录下的target.zip内的所有文件解压到D:/Work目录:
with ZipFile(os.path.join(os.getcwd(), 'target.zip')) as zf:
for file in zf.namelist():
zf.extract(file, r'd:/Work')
# 解压zip文档中的所有文件到当前目录
ZipFile.extractall([path[, members[, pwd]]])
# members 默认值为zip文档内的所有文件名称列表,也可以设置自己要解压的文件名称
# 将zip文档内的信息打印到控制台上
ZipFile.printdir()
# 设置zip文档的密码
ZipFile.setpassword(pwd)
# 获取zip文档内指定文件的二进制数据
ZipFile.read(name[, pwd])
读取zip文档内一个txt.txt文件的二进制数据并保存到D:/txt.txt。
with ZipFile(os.path.join(os.getcwd(), 'target.zip')) as zp:
data = zp.read('txt.txt')
(lambda f, d: (f.write(d), f.close()))(open(r'd:/txt.txt', 'wb'), data)
写文件
# 将指定文件添加到zip文档中
ZipFile.write(filename[, arcname[, compress_type]])
# filename 文件路径
# arcname 添加到zip文档之后保存的名称
# compress_type 压缩方法,可以是zipfile.ZIP_STORED 或zipfile.ZIP_DEFLATED
linesep | 换行符(/n 根据不同平台自动切换) |
sep | 文件路径名分隔符 (/) |
pathsep | 文件路径分隔符 (:) |
curdir | 当前工作目录 (.) |
pardir | 当前工作目录的父目录 (..) |
path | # 判断是否是文件 os.path.isfile("aa.txt") |
glob是一个文件操作相关模块,可以查找指定条件的文件,并支持通配符操作(*,?,[])。
其中:
1. "*" 匹配0个或多个字符;
2. "?" 匹配一个字符;
3. "[]" 匹配指定范围内的字符,如[0-9]匹配数字。
[a-z] 匹配括号中给出的范围中的一个字符
[!abc] 匹配括号中未给出的一个字符
[!a-z] 匹配不在括号内给定范围内的一个字符
参考: glob模块使用教程
两个主要方法如下:
1. glob():
返回所有匹配的文件绝对路径列表list,只包括当前目录里的文件名,不包括子文件夹里的文件。
# 获得C盘下的所有txt文件
glob.glob(r'c:*.txt')
2. iglob()
获取一个迭代器 iterator 对象,使用它可以逐个获取匹配的文件路径名。
import glob
filename_list_iter = glob.iglob(my_path + 't*')
print(type(filename_list_iter))
#
for item in filename_list_iter:
print(item)