首页 > 编程语言 >python 打包压缩文件

python 打包压缩文件

时间:2024-11-22 16:30:14浏览次数:1  
标签:target zip python 压缩文件 file test path os 打包

1、自定义公共函数zip_files_and_dirs

import os
import zipfile

# 被压缩的目录,即使为空文件也要一起进行压缩,如果不为空则它的子级文件或目录也一起压缩,并且解压保持目录结构不变
def zip_files_and_dirs(file_path_list, target_dir, target_file_name):
    # 确保目标目录存在
    if not os.path.exists(target_dir):
        os.makedirs(target_dir)

    # 创建zip文件的完整路径
    zip_path = os.path.join(target_dir, f"{target_file_name}.zip")

    # 创建zip文件
    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for file_path in file_path_list:
            if os.path.isfile(file_path):
                # 如果是文件,直接添加到zip中
                zipf.write(file_path, os.path.relpath(file_path, os.path.dirname(file_path)))
            elif os.path.isdir(file_path):
                # 如果是目录,递归添加目录及其子内容
                for root, dirs, files in os.walk(file_path):
                    for file in files:
                        file_full_path = os.path.join(root, file)
                        arcname = os.path.relpath(file_full_path, os.path.dirname(file_path))
                        zipf.write(file_full_path, arcname)

                    # 确保即使目录为空也被添加
                    if not files and not dirs:
                        arcname = os.path.relpath(root, os.path.dirname(file_path)) + '/'
                        zipf.writestr(arcname, '')

    return zip_path


if __name__ == '__main__':
    # 存放目录或文件的列表
    _file_path_list = [r'D:\ljh\project\test\test_path\new',  // 存有子文件和子目录
                       r'D:\ljh\project\test\test_path\test_dir',  // 空目录
                       r'D:\ljh\project\test\test_path\docx_file.docx',  
                       r'D:\ljh\project\test\test_path\test.txt']

    _target_dir = r'D:\ljh\project\test\test_path\target_dir'  //压缩后目标目录
    _zip_path = zip_files_and_dirs(_file_path_list, _target_dir, 'output') // 压缩打包, 'output'为压缩的文件名(output.zip)
    print(f"ZIP 文件已创建:{_zip_path}")

2、输出结果:

ZIP 文件已创建:D:\ljh\project\test\test_path\target_dir\output.zip

标签:target,zip,python,压缩文件,file,test,path,os,打包
From: https://www.cnblogs.com/lanjianhua/p/18563121

相关文章

  • python批量修改mysql中某个字段的长度
    突然被告知DB中某个关键字段长度要增大,涉及到N张表,改起来超麻烦,想着用代码改,比较少写这种增删表或者改变表结构的代码,记录下。importpymysqldefmodifyFieldVarcharLen(config,new_column_length):connection=pymysql.connect(**config)try:withconn......
  • 超全!python中字符串拼接的各种姿势
    Python提供了多种字符串拼接的方式,每种方式在性能、可读性和灵活性上各有特点。以下是常见的字符串拼接方式及其总结:1.使用+操作符s1="Hello"s2="World"result=s1+""+s2#HelloWorld特点:简单易懂,适合小规模拼接。多个+拼接可能生成多个中间字符......
  • Python 初学者的学习指南:从入门到实践 ---亲身经历版本!!!
    前言Python因其简单易学、功能强大而成为初学者编程的首选语言。无论你是零基础的小白,还是想拓展技能的开发者,Python都能为你提供无限可能。本篇博客将为Python初学者提供一套学习方法和学习路线,帮助你在短时间内掌握Python编程的核心知识,并学以致用。学习方法明......
  • 基于Python的人事管理系统
    作者:计算机学姐开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码精品专栏:Java精选实战项目源码、Python精选实战项目源码、大数据精选......
  • 学习Python Day8
    1.列表1.1优点可以存储多个数据,且可以是不同数据类型1.2常用操作1.2.1查找1.2.1.1下标list1=['apple','orange','banana']print(list1[0])print(list1[1])print(list1[2])1.2.1.2函数index():返回数据的下标,如果不存在,则报错list1=['apple','orange'......
  • 毕业论文设计 Python实现基于改进的鲸鱼优化算法(IWOA)和门控循环单元(GRU)进行时间序列预
    目录Python实现基她改进她鲸鱼优化她法(UZIWOA)和门控循环单元(GTT)进行时间序列预测模型她详细项目实例    2项目背景介绍...2项目目标她意义...2项目目标:...2项目意义:...3项目挑战...3项目特点她创新...3项目应用领域...3项目效果预测图她程序设计...4项......
  • 毕业论文设计 Python 实现基于WGAN的生成对抗网络数据生成的详细项目实例
    目录Python实现基她WGAN她生成对抗网络数据生成她详细项目实例...5项目背景介绍...5一、引言...5二、WGAN背景及优势...51.生成对抗网络(GAN)简述...52.WGAN她核心创新:Wattestterzin距离...63.1-李普希茨条件她权重裁剪...6项目目标...61. 构建高质量她数......
  • 毕业论文设计 Python 实现基于SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络进行时
    目录Python实现基爱她TTA-CNN-LTTM麻雀算法优化卷积长短期记忆神经网络进行时间序列预测模型爱她详细项目实例    4项目背景介绍...4项目目标...5提升预测精度...5实现自动化优化...5提升模型爱她泛化能力...5提高计算效率...5项目意义...5创新算法应用.......
  • 毕业论文设计 Python 实现基于PSO-LSTM粒子群优化长短期记忆神经网络进行时间序列预测
    目录Python实现基于PTO-LTTM粒子群优化长短期记忆神经网络进行时间序列预测模型丁当详细项目实例    5项目背景介绍...5项目目标...51.     模型架构丁当设计愛她实现...62.     数据集丁当选择愛她预处理...63.     训练愛她调优过程...6......
  • 使用Python实现基本图像识别
    Python是一种强大且易于使用的编程语言,广泛应用于数据科学和图像处理领域。通过其丰富的库支持,我们可以快速实现图像处理任务,例如边缘检测。以下示例展示了如何用Python和基础工具实现简单的边缘检测。代码实现以下代码利用Sobel算子进行灰度图像的边缘检测:python更多内容访问......