Python:writing 个文件夹中的文件到 zipfile 并压缩它
Python:writing files in a folder to zipfile and compressing it
我正在尝试使用 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: [Error 2] The system cannot find the file specified: 'test1.bak'
我知道它在那里,因为它找到了它找不到的文件的名称。
我想知道为什么它没有压缩以及为什么会出现此错误。
存在较大的 .bak 文件,因此它们可以 运行 超过 4GB,这就是我允许 64 位的原因。
编辑:成功感谢大家回答我的问题这里是我的最终代码,希望这对我未来的谷歌员工有帮助:
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()
正如我在评论中所说的那样:
Python 不是在它所在的文件夹中查找文件,而是在当前工作目录中查找文件。而不是
zf.write(file)
你需要
zf.write(path + os.pathsep + file)
os.listdir(path)
returns 相对于路径的名称 - 您需要使用 zf.write(os.path.join(path, file))
来告诉它文件的完整位置。
我正在尝试使用 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: [Error 2] The system cannot find the file specified: 'test1.bak'
我知道它在那里,因为它找到了它找不到的文件的名称。
我想知道为什么它没有压缩以及为什么会出现此错误。
存在较大的 .bak 文件,因此它们可以 运行 超过 4GB,这就是我允许 64 位的原因。
编辑:成功感谢大家回答我的问题这里是我的最终代码,希望这对我未来的谷歌员工有帮助:
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()
正如我在评论中所说的那样: Python 不是在它所在的文件夹中查找文件,而是在当前工作目录中查找文件。而不是
zf.write(file)
你需要
zf.write(path + os.pathsep + file)
os.listdir(path)
returns 相对于路径的名称 - 您需要使用 zf.write(os.path.join(path, file))
来告诉它文件的完整位置。