Python 压缩打包文件/文件夹的方法

介绍

        实现压缩打包文件/文件夹的方法,分两种类型处理,打包文件是需要传入文件的路径,打包文件夹是传入文件夹的路径

实现压缩打包的代码

import os
import shutil
from zipfile import ZipFile


# 压缩打包文件
def compress_pack_file(zip_path, compress_type="file", file_path_list=[], folder_path=""):
    """
    传入的是文件路径列表则压缩指定文件,传入的是文件夹则压缩该文件夹
    :param zip_path: 需要写入的zip文件路径
    :param compress_type: 压缩的类型:"file":压缩指定文件;"folder":压缩文件夹
    :param file_path_list: 文件路径列表
    :param folder_path: 文件夹路径
    :return:
    """
    data_dict = {"data": "", "warning_info": "", "error_info": "", }
    try:
        if compress_type == "file":
            if not len(file_path_list):
                data_dict["error_info"] = "没有文件需要压缩打包"
                return data_dict

            with ZipFile(zip_path, 'w') as zip_file:
                for file_path in file_path_list:
                    if os.path.exists(file_path):
                        file_name = os.path.basename(file_path)
                        zip_file.write(file_path, file_name)
                    else:
                        data_dict["warning_info"] += f"【{file_path}】无法压缩打包" + "\n"
        elif compress_type == "folder":
            if zip_path == folder_path:
                data_dict["error_info"] = "不能压缩打包"
                return data_dict
            file_name_without_ext = os.path.splitext(zip_path)[0]
            shutil.make_archive(file_name_without_ext, 'zip', folder_path)
            
        else:
            data_dict["error_info"] = f"所选压缩打包类型无效"

    except Exception as e:
        data_dict["error_info"] = f"执行压缩打包失败"
        print(e)

    return data_dict


if __name__ == '__main__':
    f_path = r"D:\BusinessProject\结果文件\2023-12-01"
    z_p = r"D:\BusinessProject\结果文件\2023-12-01\压缩文件.zip"
    f_l = [
        'D:\\BusinessProject\\结果文件\\2023-12-01\\2023-11-29-2023-11-29-官方旗舰店--2023-12-01_10:57.xlsx',
        'D:\\BusinessProject\\官方旗舰店--2023-12-01_11:00.xlsx',
        'D:\\BusinessProject\\官方旗舰店--2023-12-01_11:01.xlsx',
        'D:\\BusinessProject\\官方旗舰店--2023-12-01_11:02.xlsx',
        'D:\\BusinessProject\\卧室家具旗舰店--2023-12-01_11:01.xlsx',
        'D:\\BusinessProject\\卧室家具旗舰店--2023-12-01_11:02.xlsx']
    fl_path = 'D:\\BusinessProject\\结果文件\\2023-12-01\\2023-11-29-2023-11-29-官方旗舰店--2023-12-01_10:57.xlsx'

    # result_dict = compress_pack_file(z_p, "file", file_path_list=f_l)  # 压缩打包文件
    result_dict = compress_pack_file(z_p, "folder", folder_path=fl_path)  # 压缩打包文件夹
    print(result_dict)

实现查找文件夹的文件路径代码

import os


file_paths = []
f_path = r"D:\BusinessProject\结果文件\2023-12-01"
for root, dirs, files in os.walk(f_path):
    for file_name in files:
        file_path = os.path.join(root, file_name)
        file_paths.append(file_path)

print(file_paths)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值