问题遇到的现象和发生背景
win10 pycharm2021.3 python3.7 环境
运行程序后出现无线死循环,手动中止程序,发现压缩的zip包达到几个G
问题相关代码,请勿粘贴截图
import os
with zipfile.ZipFile('spam.zip','w') as myzip:
for i in os.listdir('./'):
myzip.write(i)
print(i,os.path.getsize(i))
运行结果及报错内容
手动结束程序的报错:
Traceback (most recent call last):
File "F:/python_study/!!!!!!!modular_12/code/9.内置模块-压缩模块-zipfile.py", line 45, in <module>
myzip.write(i)
File "E:\Program Files\Python37\lib\zipfile.py", line 1722, in write
shutil.copyfileobj(src, dest, 1024*8)
File "E:\Program Files\Python37\lib\shutil.py", line 79, in copyfileobj
buf = fsrc.read(length)
KeyboardInterrupt
Process finished with exit code 1
我的解答思路和尝试过的方法
个人理解:压缩包不能存放在当前文件夹, 不然for循环也会把生成的压缩包当作文件处理,从而造成无限循环
尝试1: 在函数zipfile.ZipFile中将参数file路径调整至被压缩目录的上级目录
尝试2: 在函数zipfile.ZipFile中添加参数zipfile.ZIP_DEFLATED可以解决
我想要达到的结果
想知道具体的原理及如何不改变file路径且不添加参数zipfile.ZIP_DEFLATED来完成批量压缩当前文件夹中的所有文件