最近处理的数据量有点大,因为需要压缩的操作。平时都是使用shell命令,今天想试试zipfile,果不其然,我又掉坑里了-_-|||
一、zipfile实现压缩文件
老规矩先亮结果
date = '20200319'
with zipfile.ZipFile("根目录/"+date+".zip", 'w', zipfile.ZIP_DEFLATED) as f:
f.write("根目录/"+date+".txt",date+".txt")
它的原型是这个
with zipfile.ZipFile(target[, mode[,compress_type]] ) as f:
f.write(filename[,arcname])
简单版
with zipfile.ZipFile(压缩包名[, mode[,compress_type]] ) as f:
f.write(想压缩的文件名[,文件在压缩包内的文件])
zipfile中的ZipFile类包括但不限于以下参数:
target:你想要打开的压缩包名。因为我的mode选择的是w,所以会新建/覆盖压缩包。无论你是读还是写,都需要先打开一个压缩包。
mode:操作文件的模式。常见的w,r都可以。
compress_type:压缩的模式。
ZIP_DEFLATED:表示压缩,
ZIP_STORE:表示只打包,不压缩。(这个Linux中的gz跟tar格式有点类似)
ZipFile中的write()方法也有以下参数:
filename:你想对其进行压缩的的文件名。
arcname:压缩后的文件在压缩包内的名字
值得一提的是,如果你只传入filename参数,那在压缩包内是包含根目录的路径的,即数个层层嵌套的文件夹(老千层饼了)
如果加上arcname,包内就只有一个文件,非常干净利落。
还有,wirite中也有一个compress_type参数,但是上面俩个中只需要设置一个就好了
二、zipfile实现解压文件
还没用到,下次再说嘻嘻