下载
百度云 提取码:cyyy
链接:https://pan.baidu.com/s/1-RNZoS9hUvNodQZhF26hXA?pwd=cyyy
提取码:cyyy
场景
昨天是北湖的活动,他们拍了很多照片,今天我要把一大堆图片分类,放到不同文件夹里,然后每个文件夹都弄成一个压缩包,发给对应的人。
当你想把一系列文件夹,分别压缩为一个压缩包,这个时候就需要一个文件夹一个文件夹手动压缩。
目前市面上能做到批量压缩的只有winrar,但是这个软件比较麻烦,有流氓嫌疑,所以我干脆就直接写了一个批量压缩。
使用
吧程序复制到目标目录下,双击运行即可。
简单粗暴,把文件夹下所有东西都压缩一遍。
思路+代码
make_zip函数可以将文件/文件夹进行压缩,其中文件和文件夹逻辑略有不同,用os.path.isdir进行区分。
在主函数中,先获取当前路径以及路径下所有文件/文件夹,之后遍历压缩。
import zipfile
import os
# 批量压缩文件夹/文件
def make_zip(root,zip_name):
# 是文件夹
if os.path.isdir(root):
zip=zipfile.ZipFile(zip_name,'w',zipfile.ZIP_DEFLATED)
for abs_path,dirnames,filenames in os.walk(root):
rel_path=abs_path.replace(root,'') # 去掉根路径,成为zip内路径
for filename in filenames:
zip.write(os.path.join(abs_path,filename),os.path.join(rel_path,filename))
zip.close()
# 是文件
else:
with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zip:
# 获取文件名
filename=os.path.split(root)[-1]
zip.write(root,filename)
if __name__=='__main__':
# 打包运行目录下所有文件夹
root=os.getcwd()
dirs=os.listdir()
for dir in dirs:
print('正在打包:',dir)
make_zip(os.path.join(root,dir),dir+'.zip')
print('所有文件夹打包完成,按Enter退出')
input() # 阻塞