首页 > 解决方案 > zip 文件正在压缩到默认项目目录文件夹而不是文件目录

问题描述

我的代码是:

    def zip_file(path, zip_file_name ,root):
    ziph = zipfile.ZipFile(zip_file_name, 'w', zipfile.ZIP_DEFLATED)
    ziph.write(path, arcname= os.path.join(root, os.path.splitext(zip_file_name)[0]))
    #os.remove(path)
    ziph.close()

def zip_dir(dir_to_zip):
    for root, dirs, files in os.walk(dir_to_zip):
        for curr_file in files:
            fullFilePath = os.path.join(root, curr_file)
            if not curr_file.endswith('.zip'):
                zip_file(fullFilePath, "{}.zip".format(fullFilePath), root)

if __name__ == '__main__':

    zip_dir('C:\\Users\\My_namne\\Desktop\\TEST')

我希望它将文件压缩到原始文件夹,但它会压缩到我项目的所有文件的工作目录。如何更改输出存档的目录?现在它压缩到我的工作目录并将整个根压缩到路径

标签: pythonzip

解决方案


第一个参数zipfile.ZipFile应该是您正在创建的档案的完整路径。做出改变zip_dir

def zip_dir(dir_to_zip):
    for root, dirs, files in os.walk(dir_to_zip):
        for curr_file in files:
            fpath = os.path.join(root, curr_file)
            zip_file(fpath, "{}.zip".format(fpath),root)

这将为其目录中的每个文件创建一个存档。存档将只包含文件本身,而不是文件的整个路径。

import os, zipfile
def zip_file(filepath, zipfilepath ,curr_file):
    with zipfile.ZipFile(zipfilepath, 'w', zipfile.ZIP_DEFLATED) as ziph:
        ziph.write(filepath, arcname=curr_file)

def zip_dir(dir_to_zip):
    for root, dirs, files in os.walk(dir_to_zip):
        for curr_file in files:
            if not curr_file.endswith('.zip'):
                filepath = os.path.join(root, curr_file)
                zipfilepath = "{}.zip".format(filepath)
                zip_file(filepath, zipfilepath, curr_file)

推荐阅读