使用zipfile模块在python中创建压缩的zip文件

use*_*058 0 python compression zip

我是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()
Run Code Online (Sandbox Code Playgroud)

它正在创建一个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"

它也没有压缩.

请有人分享这个问题的解决方案.

谢谢,Subrat

sno*_*h09 6

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

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
Run Code Online (Sandbox Code Playgroud)

我想你要求删除zip文件中文件的相对路径.如果你真的想要那个,你可以写:

zip.write(locfile, os.path.basename(locfile))
Run Code Online (Sandbox Code Playgroud)

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