常见的数据存档和压缩的模块。如:
zipfile:【标准库】zip 文件的压缩解压相关操作tarfile:【标准库】对 tar 压缩包的操作,感觉有一个 zipfile 操作 zip 就够了,OUTzlib:【标准库】 与 gzip 兼容的压缩gzip:【标准库】对 gzip 格式的支持。bz2:【标准库】对 bzip2 压缩算法的支持。lzma:【标准库】用 LZMA 算法压缩。概述 数据压缩三大指标:压缩时间、解压时间、压缩率 应用场景:数据传输:网页加载、大数据应用的中间数据传输,主要考虑压缩和解压时间,压缩率不重要。主要工具有 snappy、lz4、gzip 等等。 数据分发:各种软件包的下载,这种情况压缩时间不重要,解压时间和压缩率则会严重影响用户下载、安装软件的体验。主要工具:gz、bzip2、winrar、xz 等。 数据备份:主要看压缩率,对解压时间几乎没有要求(备份的数据几乎不会再使用),主要使用基于 bwt、ppm 等高压缩率算的工具(7z、xz 也勉强可以)。 相关分析:7z:与 xz 一样基于 lzma 算法,特点是压缩时间长、压缩率高、解压时间短,所以只适用于数据分发和备份,备份一般人是接触不到的,数据分发上 7z 虽然算法本身很适合,但是大部分人是不会预装 7z 的,对这些人来说解压的时间其实是装 7z 的时间 + 实际解压时间,这样一来 7z 的优势就荡然无存了。 tar.gz:linux 用得最多,因为能保留 unix 风格的权限,tar 本身不进行压缩,是将所有文件的内容和权限拼成一个文件而已 zipfile zipfile:【标准库】zip 文件的压缩解压相关操作
tarfile:【标准库】对 tar 压缩包的操作,感觉有一个 zipfile 操作 zip 就够了,OUT
ZipFile:压缩包实例:由 member 块组成,以 ZipInfo 对象形式描述,即 ZipFile 是 ZipInfo 的序列。 基本使用 1 2 with zipfile.ZipFile(zip_file_path,mode='w' ) as f: f.write(filename=file_path,arcname=os.path.basename(file_path))
1 class zipfile .ZipFile(file[,mode[,compression[,allowZip64]]])
属性 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ZipInfo.filename ZipInfo.date_time ZipInfo.compress_type ZipInfo.comment ZipInfo.extr ZipInfo.create_system ZipInfo.create_version ZipInfo.extract_version ZipInfo.reserved ZipInfo.flag_bits ZipInfo.volume ZipInfo.internal_attr ZipInfo.external_attr ZipInfo.header_offset ZipInfo.CRC ZipInfo.compress_size ZipInfo.file_size
方法 1 2 3 4 5 6 7 8 9 10 11 12 ZipFile.getinfo(file_name) ZipFile.infolist() ZipFile.extract(members[,path[,pwd]]) ZipFile.printdir() ZipFile.setpassword(pwd) ZipFile.read(name[,pwd])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import osfrom zipfile import ZipFiledef zip_file_list (file_list,zip_file_path ): f_zip= ZipFile(zip_file_path,mode='a' ) for file in file_list: f_zip.write(file,arcname=os.path.basename(file)) f_zip.close() path_list = [ r"C:\Users\user_name\Desktop\test\log_conf.yaml" , r"C:\Users\user_name\Desktop\test\test_try.py" , ] zip_file_list(path_list,'test.zip' )
1 2 3 4 5 6 7 8 9 10 11 12 import tarfiletar = tarfile.open ('your.tar' ,'w' ) tar.add('/Users/wupeiqi/PycharmProjects/bbs2.log' , arcname='bbs2.log' ) tar.add('/Users/wupeiqi/PycharmProjects/cmdb.log' , arcname='cmdb.log' ) tar.close() tar = tarfile.open ('your.tar' ,'r' ) tar.extractall() tar.close()
创建加密文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import zipfileimport oszip_file = zipfile.ZipFile('test.zip' , mode='w' ) zip_file.setpassword(b'test' ) zip_file.write('./requirements.txt' ) zip_file.close() with zipfile.ZipFile('test.zip' , 'r' ) as zip_file: zip_file.setpassword(b'password' )
zlib zlib:【标准库】 与 gzip 兼容的压缩
1 2 3 4 import zlibmessage = 'abcd1234' compressed = zlib.compress(message) decompressed = zlib.decompress(compressed)
gzip gzip:【标准库】对 gzip 格式的支持。
bz2 bz2:【标准库】对 bzip2 压缩算法的支持。
lzma lzma:【标准库】用 LZMA 算法压缩。