ZipFile和fnmatch的使用
ZipFile
压缩文件的基本信息
加载压缩文件,创建ZipFile 对象
1.参数file表示文件的路径或类文件对象(file-like object);
2.参数mode指示打开zip文件的模式,默认值为'r',表示读已经存在的zip文件,也可以为'w'或'a',w'表示新建一个zip文档或覆盖一个已经存在的zip文档,'a'表示将数据附加到一个现存的zip文档中;
3.参数compression表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。
class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])1.参数file表示文件的路径或类文件对象(file-like object);
2.参数mode指示打开zip文件的模式,默认值为'r',表示读已经存在的zip文件,也可以为'w'或'a',w'表示新建一个zip文档或覆盖一个已经存在的zip文档,'a'表示将数据附加到一个现存的zip文档中;
3.参数compression表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。
- ZipFile.infolist()
获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表
- ZipFile.namelist()
获取zip文档内所有文件的名称列表
- ZipFile.printdir()
将zip文档内的信息打印到控制台上
解压文件
- ZipFile.extract(member[, path[, pwd]])
- ZipFile.extractall([path[, members[, pwd]]])
import zipfile # 加载压缩文件,创建ZipFile对象 # class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) # 参数file表示文件的路径或类文件对象(file-like object) # 参数mode指示打开zip文件的模式,默认值为'r',表示读已经存在的zip文件,也可以为'w'或'a', # 'w'表示新建一个zip文档或覆盖一个已经存在的zip文档,'a'表示将数据附加到一个现存的zip文档中 # 参数compression表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。 # 如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。 file_dir = 'D:/text.zip' zipFile = zipfile.ZipFile(file_dir) # 01 ZipFile.infolist() 获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表 print(zipFile.infolist()) # 02 ZipFile.namelist() 获取zip文档内所有文件的名称列表 print(zipFile.namelist()) # 03 ZipFile.printdir() 将zip文档内的信息打印到控制台上 print(zipFile.printdir()) zipFile = zipfile.ZipFile(file_dir) for file in zipFile.namelist(): zipFile.extract(file, 'd:/Work') zipFile.close()
fnmatch
fnmatch 模块主要用于文件名称的匹配,其能力比简单的字符串匹配更强大,但比使用正则表达式相比稍弱。。如果在数据处理操作中,只需要使用简单的通配符就能完成文件名的匹配,则使用 fnmatch 模块是不错的选择。
fnmatch 模块中,常用的函数及其功能如表 1 所示

fnmatch 模块匹配文件名的模式使用的就是 UNIX shell 风格,其支持使用如下几个通配符:
- *:可匹配任意个任意字符。
- ?:可匹配一个任意字符。
- [字符序列]:可匹配中括号里字符序列中的任意字符。该字符序列也支持中画线表示法。比如 [a-c] 可代表 a、b 和 c 字符中任意一个。
- [!字符序列]:可匹配不在中括号里字符序列中的任意字符。
import fnmatch #filter() print(fnmatch.filter(['dlsf', 'ewro.txt', 'te.py', 'youe.py'], '*.txt')) #fnmatch() for file in ['word.doc','index.py','my_file.txt']: if fnmatch.fnmatch(file,'*.txt'): print(file) #fnmatchcase() print([addr for addr in ['word.doc','index.py','my_file.txt','a.TXT'] if fnmatch.fnmatchcase(addr, '*.txt')]) #translate() print(fnmatch.translate('a*b.txt'))
链接:https://www.jianshu.com/p/b9da5fd2e5cf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

浙公网安备 33010602011771号