首页 > 解决方案 > 如何使用 zipfile 在绝对路径上创建 zip 文件

问题描述

我正在尝试创建来自不同目录的文件的 zip 文件。最后,我想将该 zip 文件保存到与 python 文件 python.xml 不同的路径。我有以下代码片段

def zipfile_method(file_list):
    try:
        zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip')
        print(zip_path)
        zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
        for files in file_list:
            path = os.path.abspath(files)
            zip_file.write(path)
        zip_file.close()
    except Exception as e:
        print("exception occured during compression %s" % e)


zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf']) 

我的 python 文件的路径是/Users/nirmalsarswat/Desktop/app.py.

我希望该文件路径将打开,/Users/nirmalsarswat/Document/jdk.zip但 zipfile 将其保存在 python 文件的同一文件夹中,如下所示/Users/nirmalsarswat/Desktop/Users/nirmalsarswat/Document/jdk.zip

我如何才能将文件保存在/Users/nirmalsarswat/Document/jdk.zip路径上

我正在使用 MacOS,Python 3.6.4,提前谢谢!!!

标签: pythonzipfile

解决方案


实际上我能看到的是,你做得对,但你对路径感到困惑。当您将唯一的绝对路径传递给 时write,它将使用完整目录压缩文件,这似乎是您面临的问题。

尝试解析basenamewrite它会正常工作,就像这样

from os.path import basename # add this to your imports
def zipfile_method(file_list):
    try:
        zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip') # no need to this one, parse string itself
        print(zip_path)
        zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
        for files in file_list:
            path = os.path.abspath(files)
            zip_file.write(path, basename(path))
        zip_file.close()
    except Exception as e:
        print("exception occured during compression %s" % e)


zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf']) 

推荐阅读