zipfile
一、读取
import zipfile
#已有zip:bb.zip , 默认模式r,读
azip = zipfile.ZipFile('bb.zip') # ['bb/', 'bb/aa.txt']
# 返回所有文件夹和文件 ['2.txt', '1.txt', 'home/luoxinyu/a1.txt']
print(azip.namelist())
# 返回该zip的文件名 bb.zip
print(azip.filename)
# 压缩文件里bb文件夹下的aa.txt **读文件的时候需要带文件在压缩包里的完整路径**
azip_info = azip.getinfo('bb/aa.txt')
# 原来文件大小
print(azip_info.file_size)
# 压缩后大小
print(azip_info.compress_size)
# 这样可以求得压缩率,保留小数点后两位
print('压缩率为{:.2f}'.format(azip_info.file_size/azip_info.compress_size))
可以看到打开方式并不是想象中的open,而是ZipFile。用namelist()可以返回里面所有的文件夹和文件路径。getinfo可以获得某路径下文件的信息,如上。
还能直接读取压缩包里文件的内容,下面两种方法得到的结果是一样的。需要注意的是,读取出来的数据好像是字节形式的,解码成utf-8就好。
# 可以直接读取里面的内容, 不过貌似是字节形式.需要解码回utf-8.参数也可以传ZiInfo, 如b
a = azip.read('bb/cc.txt').decode('utf-8')
prin