shutil对压缩包的处理是通过调用zipFile和tarFile两个模块来进行的。
对于zip文件来说
import zipfile
# zipfile压缩
z = zipfile.ZipFile('ss.zip', 'w', zipfile.ZIP_STORED) #打包,zipfile.ZIP_STORED是默认参数
# z = zipfile.ZipFile('ss.zip', 'w', zipfile.ZIP_DEFLATED) #压缩
z.write('ss2')
z.write('ss1')
z.close()
#zipfile解压
z = zipfile.ZipFile('ss.zip', 'r')
z.extractall(path=r"C:\Users\Administrator\Desktop")
z.close()
对于tar文件来说
import tarfile
# 压缩
tar = 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()
自己的代码
待优化,需要分开完成对zip和tar文件进行解压缩
import zipfile
import os
if __name__=='__main__':
source_path=r'E:\2d_whole_img_529\label_5_29\5_29'
for (root1, dirs1, files1) in os.walk(source_path):
for filename1 in files1:
imagepath1=os.path.join(root1,filename1)
print(imagepath1)
try:
z = zipfile.ZipFile(imagepath1, 'r')
z.extractall(path=r"E:\2d_whole_img_529\all")
z.close()
except:
pass
参考资料: