使用zip file modu在python中创建压缩的zip文件

2024-10-01 02:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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”

也不会被压缩。

请大家分享这个问题的解决方案。

谢谢, 亚老鼠


Tags: 文件testtxtdirzipstackoverflow结构目标目录
2条回答

要启用压缩,请在构造函数中指定压缩方法:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)

我想你是在请求删除zip文件中文件的相对路径。如果你真的想要,你可以写:

zip.write(locfile, os.path.basename(locfile))

但是,这可能是一个坏主意,因为删除所有路径信息将导致命名冲突,如果您压缩两个同名文件。

检查official documentation它可以清楚地解决您的问题。

ZipFile.write(filename, arcname=None, compress_type=None)

压缩应该是定义的常量之一,例如,压缩

注意,您还可以在构造函数上指定conmpression类型 将应用于添加到zip存档的所有文件。

文档还包括以下注意事项:存档名称应与存档根目录相关,即它们不应以路径分隔符开头。

另外,如果您只需在任何搜索引擎中输入python zipfile,您就会将官方文档视为第一个链接之一。

相关问题 更多 >