当前位置: 首页 > news >正文

【Python】shutil.make_archive() 方法详解

文章目录

    • 功能概述
    • 函数签名
    • 核心参数详解
      • 1. base_name
      • 2. format
      • 3. root_dir
      • 4. base_dir
    • 使用示例
      • 将 /home/user/project/data 目录打包为 data.tar.gz,并保存到 /home/user/backups/
      • 打包当前工作目录下的 docs 文件夹为 zip 文件
    • 替代方案
    • 总结

shutil.make_archive()Python 标准库 shutil 模块提供的一个用于 创建归档文件(如 ZIPTAR 等)的高级函数。它简化了 文件压缩和打包的过程,支持多种归档格式。

功能概述

shutil.make_archive() 可以:

  • 将指定目录或文件打包成压缩文件
  • 支持多种归档格式(ZIPTARBZ2XZ 等)
  • 自动处理文件路径和归档结构

函数签名

shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])

我们重点关注前四个常用参数:base_name, format, root_dir, base_dir,其他参数较为少见,可以参考官方文档了解更多信息。

核心参数详解

1. base_name

  • 类型: str
  • 作用: 指定归档文件的基本名称(不含扩展名),最终输出文件路径由该名称加上格式后缀组成。
  • 说明:
    • 可以是绝对路径或相对路径;如果是相对路径,归档文件会在 当前工作目录(cwd) 下创建。
    • 函数会自动根据 format 参数添加相应的扩展名。
  • 如果目标归档文件已存在,会被静默覆盖
  • 需要有对源文件的读取权限和对目标位置的写入权限

2. format

  • 类型: str
  • 作用: 指定归档格式
  • 支持的格式:
    • ‘zip’ - ZIP 格式
    • ‘tar’ - TAR 格式
    • ‘bztar’ - bzip2 压缩的 TAR
    • ‘xztar’ - xz 压缩的 TAR
    • ‘gztar’ - gzip 压缩的 TAR

3. root_dir

  • 类型: str
  • 作用: 定义归档的根目录,在创建归档文件之前会将当前工作目录切换为 root_dir
  • 默认值: None(表示使用当前工作目录)
  • 说明: 归档文件中所有路径都将相对于此目录。这样做的好处是归档文件中不会包含多余的路径信息

4. base_dir

  • 类型: str
  • 作用: 定义要归档的具体子目录或文件路径,相对root_dir的路径,
  • 默认值: None (表示使用 root_dir)
  • 说明: 一般为None(表示使用 root_dir)或为 root_dir的某个子目录或文件的名称

使用示例

将 /home/user/project/data 目录打包为 data.tar.gz,并保存到 /home/user/backups/

 make_archive(base_name='/home/user/backups/data',format='gztar',root_dir='/home/user/project',base_dir='data')

或者

 make_archive(base_name='/home/user/backups/data',format='gztar',root_dir='/home/user/project/data',base_dir=None)

都会生成文件/home/user/backups/data.tar.gz,区别是第一种方式生成的归档文件中有根目录data,而第二种方式生成的归档文件中直接就是data的所有子目录。

打包当前工作目录下的 docs 文件夹为 zip 文件

 make_archive(base_name='docs_backup',format='zip',root_dir=None, # 等效于'.'base_dir='docs')

替代方案

如果需要更细粒度的控制,可以考虑:

  • zipfile 模块 (专门处理ZIP文件)
  • tarfile 模块 (专门处理TAR文件)
  • 第三方库如 pyzipper (增强版ZIP处理)

shutil.make_archive() 的优势在于它提供了简单的一站式解决方案,适合大多数常见打包需求。

总结

shutil.make_archive()Python中一个非常实用的归档工具,通过合理设置 base_nameformatroot_dirbase_dir 参数,可以灵活地创建各种格式的归档文件,满足不同的打包需求。

http://www.dtcms.com/a/351144.html

相关文章:

  • 支持向量机(SVM)核心原理与应用解析
  • SOME/IP-SD规范中,对 服务(Service) 和 实例(Instance)的理解
  • 多模态RAG架构:下一代跨模态智能检索系统的设计与实践
  • 机器视觉学习-day03-灰度化实验-二值化和自适应二值化
  • 使用C++与Qt6,在windows上打造MacOS风格桌面应用窗口
  • PDF文件中的相邻页面合并成一页,例如将第1页和第2页合并,第3页和第4页合并
  • Mac测试端口连接的几种方式
  • 如何将视频从安卓设备传输到Mac?
  • Mac安装mitmproxy及操作对监控的请求
  • 少儿舞蹈小程序详细设计文档
  • Mac中修改Word的Normal.dotm文件
  • 使用Uniapp开发小程序,如何引入插件组件!
  • 三电平buckboost电路出现上下母线不平衡是什么原因
  • Linux驱动开发笔记(八)——按键输入实验
  • 滚珠导轨如何定义半导体制造精度?
  • 【LeetCode 热题 100】75. 颜色分类——双指针
  • 算法题打卡力扣第209题:长度最小的子数组(mid)
  • 计算神经科学数学建模编程深度前沿方向研究(中)
  • AbMole小课堂丨Lenvatinib(E7080):如何通过靶向多靶点抑制VEGFR/FGFR/PDGFRα抑制肿瘤?
  • 【vue eslint】报错:Component name “xxxx“ should always be multi-word
  • LeetCode 100 -- Day6
  • 论文阅读:CIKM 2024 Empowering Private Tutoring by Chaining Large Language Models
  • 低空经济产业白皮书:音视频链路在智能飞行体系中的核心地位
  • 验证码请求与缓存问题解决方案
  • 用无标签语音自我提升音频大模型:SI-SDA 方法详解
  • 【JavaEE】(19) MyBatis-plus
  • 基于SpringBoot的考研资讯平台
  • 没有cpolar:会议记录手忙脚乱;有了cpolar:CapsWriter语音转文字轻松搞定
  • 如何在GitHub找到10k+个stars的仓库
  • USB摄像头驱动完整分析 (从插入到出画)