gpt4 book ai didi

python - 将文件压缩到python中的指定路径

转载 作者:行者123 更新时间:2023-11-28 18:49:39 25 4
gpt4 key购买 nike

几周以来我一直在学习 Python。在其中一个问题中,我必须将列表中包含的文件压缩到指定路径。我在 Windows 中使用 python。

python zipall.py C:\temp C:\example

应该从 C:\example 中提取特定类型的文件,我在某些列表(比如 listX)中成功地做到了这一点。现在的工作是制作 zip 文件 C:\temp,其中包含 listX 中的 all 压缩文件。如何在 Python 中执行此操作?

我必须在指定路径(此处为 C:\temp)中制作 zip 文件,其中包含列表(此处为 listX)中包含的所有文件。

我试过 zipfile.ZipFile() 如下:

zip_name = zipfile.ZipFile(tozip, 'w')
l=len(listX)
ctr=0
for thelist in listX:
zip_name = zipfile.ZipFile(tozip+str(ctr), 'w')
if ctr<=l:
ctr+=1
zip_name.write(thelist,'zip')

它当然会创建“l”个 zip 文件,但我必须在 tozip(上面的“C:\temp”)给出的路径内创建“l”个 zip 文件

最佳答案

zipfile.ZipFile 在您要写入 ZIP 文件的位置为您创建输出 ZIP 存档。但是你需要给它一个文件名,而不是目录名。根据您的描述,tozip 似乎设置为 C:\temp。在这种情况下,您应该使用 os.path.join 来构建文件名,如下所示:

import os.path
tozip = os.path.join(r'C:\temp', 'out.zip')

这应该让您在所需目录中创建一个存档。请注意,您可以改为执行此操作,使用方便的“tempfile”库来避免将 Windows 路径硬编码到您的脚本中:

import os.path
from tempfile import gettempdir
tozip = os.path.join(gettempdir(), 'out.zip')

现在,当您遍历列表时,我想您希望将每个文件一次一个地添加到您正在创建的单个存档中,对吗?您的代码在 listX 中循环,但是对于 listX 中的每个文件,它正在创建一个 ZIP 存档,并将该文件添加到新存档中。此外,当它遍历列表时,因为每次您将新的 ZIP 存档分配给 zip_name,您都完全忘记了您真正想要的存档有你的输出。所以我想你想要这个:

theZip = zipfile.ZipFile(tozip, 'w')
for elem in listX:
theZip.write(elem)

关于python - 将文件压缩到python中的指定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com