【发布时间】:2014-08-22 14:05:41
【问题描述】:
我是 python 新手。我的要求是将所有文件从源目录压缩(压缩)到目标目录。我使用了 stackOverFlow 中的以下代码。
import zipfile, os
locfile = "D:\Python\Dir_dir\Dir_dir\ABC.txt"
loczip = "D:\Python\Dir_dir\Dir_dir2\ABC_TEST.zip"
zip = zipfile.ZipFile (loczip, "w")
zip.write (locfile)
zip.close()
它正在创建一个 zip 文件,但它包含整个继承的目录结构。除了驱动器(D:/)之外,其余的结构都被添加到 zip 中。它如下所示: "D:\Python\Dir_dir\Dir_dir2\ABC_TEST.zip\Python\Dir_dir\Dir_dir\ABC.txt"
而我想要: "D:\Python\Dir_dir\Dir_dir2\ABC_TEST.zip\ABC.txt"
它也没有被压缩。
【问题讨论】:
-
您的代码不会创建“包含整个继承的目录结构”的 zip 文件。它有一个路径为
Python\Dir_dir\Dir_dir的文件,这是正确的(请参阅screenshot),因为存档文件名应与存档根目录相关,因此不应以路径分隔符(或驱动器号)开头。这是在documentation 中,所以我建议您通过查看它来增加您对stackOverFlow 代码的阅读。 -
顺便说一句,在 Windows 路径名中使用原始字符串或双转义反斜杠(在前面添加一个 r,如
r"D:\Python\Dir_dir\Dir_dir2\ABC_TEST.zip")。否则,Python 会将 '\t' 和 '\n' 之类的序列转换为制表符和换行符。 -
或者只使用正斜杠,简单易做,易读。
标签: python zip compression