Python:将文件夹中的文件写入zipfile并压缩它

时间:2015-09-23 16:33:22

标签: python zipfile

我正在尝试使用python压缩和压缩文件夹中的所有文件。最终的目标是在Windows任务调度程序中实现这一点。

import os
import zipfile

src = ("C:\Users\Blah\Desktop\Test")
os.chdir=(src)
path = (r"C:\Users\Blah\Desktop\Test")
dirs = os.listdir(path)
zf = zipfile.ZipFile("myzipfile.zip", "w", zipfile.ZIP_DEFLATED,allowZip64=True)
for file in dirs:
      zf.write(file)

现在,当我运行此脚本时,我收到错误:

  

WindowsError:[错误2]系统找不到指定的文件:' test1.bak'

我知道它在那里,因为它找到了它无法找到的文件的名称。

我想知道它为什么不是拉链以及为什么会出现这种错误。

有大的.bak文件,因此可以运行4GB以上,这就是我允许64位的原因。

编辑:成功感谢大家回答我的问题,这是我的最终代码有效,希望这有助于我未来的googlers:

import os
import zipfile
path = (r"C:\Users\vikram.medhekar\Desktop\Launch")
os.chdir(path)
dirs = os.listdir(path)
zf = zipfile.ZipFile("myzipfile.zip", "w", zipfile.ZIP_DEFLATED,allowZip64=True)
for file in dirs:
  zf.write(os.path.join(file))
zf.close()

2 个答案:

答案 0 :(得分:2)

os.listdir(path)返回相对于路径的名称 - 您需要使用zf.write(os.path.join(path, file))告诉它文件的完整位置。

答案 1 :(得分:1)

我在评论中说过两次: Python不会在它所在的文件夹中查找该文件,而是在当前工作目录中查找。而不是

zf.write(file)

你需要

zf.write(path + os.pathsep + file)