1. 为什么你需要掌握shutil.make_archive()
在日常开发中,文件打包是个绕不开的活。我见过不少新手一遇到需要打包文件的任务,就急着去找第三方库,其实Python标准库里的shutil.make_archive()已经能解决90%的问题。这个函数就像个瑞士军刀,简单几行代码就能把文件夹变成zip、tar.gz等各种格式的压缩包。
上周我帮同事处理一个自动化部署脚本,原本他们用subprocess调系统命令打包,不仅代码臃肿,还在Windows服务器上报错。换成shutil.make_archive()后,代码量减少了三分之二,而且跨平台运行稳如老狗。这就是标准库的魅力——不用装额外依赖,写出来的代码又干净又可靠。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础用法:5分钟上手文件打包
2.1 最简使用姿势
先看个最简单的例子,把当前目录下的docs文件夹打包成zip:
python复制import shutil
shutil.make_archive('docs_backup', 'zip', '.', 'docs')
这行代码干了三件事:
- 创建名为docs_backup.zip的文件
- 使用zip格式压缩
- 只打包当前目录下的docs文件夹
实测发现,如果docs_backup.zip已存在,函数会直接覆盖而不警告。所以重要文件记得先备份,这个坑我踩过。
2.2 参数详解(附避坑指南)
base_name:
- 不要加文件扩展名,函数会根据format自动加
- 可以用绝对路径(推荐)或相对路径
- 权限问题:确保对目标目录有写权限,我遇到过PermissionError就是因为脚本没权限写/var目录
format:
-
常用格式对比:
格式 压缩率 速度 适用场景 zip 中 快 Windows环境 gztar 较高 中 Linux日志打包 bztar 最高 慢 需要极致压缩率 -
注意:bztar在某些老
