gpt4 book ai didi

python - 如何只添加一个文件到 zip 而不是在 Python 中指向它的文件夹路径?

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:07 29 4
gpt4 key购买 nike

我正在使用下面的代码来压缩每天创建的备份文件。

import os, zipfile

zf = zipfile.ZipFile("Test.zip", "w")
for root, subdirs, files in os.walk("C:/Users/Bob/Desktop/Zip"):
for filename in files:
zf.write(os.path.join(root, filename))
zf.close()

问题是,当我打开 zip 文件时,它包含指向该文件的路径中的所有文件夹。例如,在 zip 中,我会有一个名为 Users/Bob/Desktop/Zip/File.gdb 的文件夹

但我只想要 zip 中的 File.gdb。原因是因为当它包含所有这些文件夹时,它实际上并没有压缩文件。它与不在 zipper 内时的尺寸相同。但如果我只压缩 File.gdb,它会从 30Mb 压缩到 3Mb。

感谢任何帮助。

最佳答案

你需要看看arcname parameter of ZipFile.write :

ZipFile.write(filename[, arcname[, compress_type]])

Write the file named filename to the archive, giving it the archive name arcname (by default, this will be the same as filename, but without a drive letter and with leading path separators removed).

在您的情况下,您很可能想要:

zf.write(os.path.join(root, filename), filename, zipfile.ZIP_DEFLATED)

关于python - 如何只添加一个文件到 zip 而不是在 Python 中指向它的文件夹路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217685/

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