python神奇的模块(os、zipfile、glob)

1. zipfile包

1.1 获取文件列表或详细信息

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       获取未压缩的文件大小

1.2 解压指定文件

# 将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文档内的所有文件名称列表,也可以设置自己要解压的文件名称

1.3 其他

# 将zip文档内的信息打印到控制台上
ZipFile.printdir()

# 设置zip文档的密码
ZipFile.setpassword(pwd)

1.4 读写文件

# 获取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

2. os模块

 linesep 换行符(/n  根据不同平台自动切换)
 sep 文件路径名分隔符 (/)
 pathsep 文件路径分隔符   (:)
 curdir 当前工作目录       (.)
 pardir 当前工作目录的父目录   (..)
path
文件相关;
如:获得文件大小
os.path.getsize("aa.txt")

# 判断是否是文件 os.path.isfile("aa.txt")

3. glob模块文件名匹配

        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)

你可能感兴趣的:(python,python)