python程序中压缩文件(windows)
需求描述
由于需要在程序中使用压缩(打包)功能,为了不影响用户正常使用(即不弹出额外的压缩页面),而有了该需求。在linux下可以直接用tar,但是在windows下,因为不知道目标人群使用的到底是那种win,无法确定能否使用tar(win10可以,win10还可以使用管道符,curl等,忍不住安利了一下win10, please forgive me.)
体验过程
在2016年暑假,我用过haozip的命令行工具(HaoZipC.exe),当年是在自己电脑上搞得,安装了2345好压。
1. 尝试HaoZipC.exe
例如:把dir下的所有文件(夹)加入到zip.zip文件中,文件目录不变。
HaoZipC.exe a zip.zip u dir\*
说明:
看HaoZipC.exe的说明文件(直接命令行运行>HaoZipC.exe)。
可以重命名HaoZipC.exe 为zip.exe
可以使用了,问题解决了???
No…,当我把重命名后的zip.exe拷贝到新的机器上时,运行报错了:
WAF(这是下图的描述!)
接着百度很多下,终于在如下网址找到了如下的办法:
https://bbs.csdn.net/topics/290010213?depth_1-utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-8&utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-8
2. 既然有大侠给出了方法,不妨一试
依然是刚才的123,321,132…
makecab 123.txt 13.zip
。。。后续不试了,因为他不能把一个目录一次打包(但貌似用shell脚本的循环可以,没有研究)
3.但我需要的是压缩(打包)文件夹
由于使用的是Python,搜索“python 压缩”,终于找到一个神器:shutil.make_archive()
import shutil
shutil.make_archive(base_name=r"C:\Users\xxx\Documents\123", format='zip', root_dir=r"C:\Users\xxx\Desktop\123")
# base_name: 文件路径+文件名
# format:文件格式
# root_dir: 是您想压缩的文件夹
# 。。。。。接下来自由发挥
完整参考:https://www.yinyubo.cn/?p=228
4.win下还可以使用vbs进行压缩
参考:https://blog.csdn.net/msccreater/article/details/9242277
我就不搬代码了,反正也没啥创新,都是抄的。
我的需求到此基本结束,谢谢大家收 观看!
总结
不知从那天开始,不知到那一天止,这世界突然间不美丽。因为我要开始写总结!