使用 zipfile、tarfile 和 shutil 模块可实现 Python 文件压缩。1. zipfile 适用于 ZIP 格式,支持单个或多个文件压缩,通过 ZipFile 类写入文件并处理路径不存在情况;2. tarfile 用于生成 .tar.gz 压缩包,适合目录归档,支持 gzip 等压缩方式,使用 tarfile.open 和 add 方法打包目录;3. shutil 提供高级接口 make_archive,一键压缩目录为 zip、tar、gztar 等格式,语法简洁,自动处理扩展名。根据需求选择:zipfile 灵活控制文件,tarfile 适合类 Unix 系统归档,shutil 最简单快捷,注意路径存在性和异常处理。

Python 提供了多种内置模块来实现文件压缩,最常用的是 zipfile、tarfile 和 shutil。根据压缩格式(如 ZIP 或 TAR.GZ),选择合适的模块即可快速完成任务。
适用于生成或读取 ZIP 格式的压缩包。支持单个或多个文件的压缩。
示例:将一个或多个文件打包为 ZIPimport zipfile
import os
def zip_files(file_list, output_zip):
with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zf:
for file in file_list:
if os.path.exists(file):
zf.write(file, os.path.basename(file))
else:
print(f"{file} 不存在")
files = ['file1.txt', 'file2.txt']
zip_files(files, 'output.zip')
适合打包并压缩目录,常用于类 Unix 系统,支持 gzip、bzip2 等压缩方式。
示例:将目录压缩为 .tar.gzimport tarfile
import os
def tar_gz_directory(sou
rce_dir, output_tar):
with tarfile.open(output_tar, "w:gz") as tar:
if os.path.isdir(source_dir):
tar.add(source_dir, arcname=os.path.basename(source_dir))
else:
print(f"{source_dir} 不是有效目录")
tar_gz_directory('/path/to/folder', 'archive.tar.gz')
多个微信小程序源码合集
微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要应用于移动端,旨在提供便捷的用户体验,无需下载安装即可在微信内使用。本压缩包包含了丰富的源码资源,涵盖了多个领域的应用场景,下面将逐一介绍其中涉及的知识点。1. 图片展示:这部分源码可能涉及了微信小程序中的``组件的使用,用于显示图片,以及`wx.getSystemInfo`接口获取屏幕尺寸,实现图片的适配和响应式布局。可能还包括了图片懒加
0
查看详情
shutil 模块提供更简洁的接口,可一键压缩整个目录,支持 zip、tar、gztar 等格式。
示例:使用 shutil.make_archive 打包目录import shutil
import os
def compress_folder(base_name, format, folder_path):
if os.path.exists(folder_path):
shutil.make_archive(base_name, format, folder_path)
print(f"已生成 {base_name}.{format}")
else:
print("指定路径不存在")
compress_folder('my_backup', 'zip', '/path/to/data')
基本上就这些。根据需要选择合适的方式,zipfile 灵活控制文件,tarfile 适合带压缩的归档,shutil 则最简单快捷。注意处理路径和异常,确保文件可访问。不复杂但容易忽略细节。
以上就是如何使用Python实现文件压缩?的详细内容,更多请关注其它相关文章!
相关文章:
Python字典中优雅地迭代剩余元素的方法
AO3最新镜像入口 Archive of Our Own官方平台访问
Golang如何安装Swagger工具_GoSwagger文档生成环境
使用Pandas转换并合并DataFrame:多列映射至统一结构
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
新手怎么开始学化妆 零基础化妆入门教程
163邮箱官方主页登录 直达网易邮箱登录核心页面
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
如何修改开机登录密码_Windows账户安全设置超详细教程【必学】
Yii2模块参数配置指南:正确声明与访问模块级配置
Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题
在WordPress中通过REST API获取BasicAuth保护的远程文章
怎么搭建一个php网站源码_搭php网站源码搭建教程
将HTML动态表格多行数据保存到Google Sheet的教程
TikTok网页版直接登录 TikTok网页端官方平台入口
如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】
html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】
如何在Promise链中优雅地中断后续then执行
12306选座怎么选到特殊座位_12306特殊座位选择注意事项
mysql备份恢复性能优化_mysql备份恢复性能优化方法
mc.js官网登录入口 mc.js官方登录入口最新版
CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整
如何在J*a中使用Locale处理多语言环境
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
J*a初级项目如何接入API数据_第三方接口请求与响应解析
C++ map遍历方法大全_C++ map迭代器使用总结
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
在Google App Engine Go中实现独立模块代码库与灵活路由
曝R星经典之作开发图 设计简陋但信息密集!
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读
WooCommerce后台产品编辑页:获取分类ID并实现角色权限控制
在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验
PHP教程:将数据库查询结果动态展示到HTML Textarea的最佳实践
J*a实现学校排课程序_面向对象结构化项目示例
解决Tabulator日期时间排序问题的专业指南
Typer应用中动态命令行参数的解析与处理
深入理解J*a合成构造器:何时以及为何阻止其生成
2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC
python3时间如何用calendar输出?
CKEditor 5 自定义构建在React应用中渲染失败的调试与解决
抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧
PHP:从文本中提取带逗号的数字价格教程
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
PostgreSQL海量数据高效导入策略:Python与Django实践指南
LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别
Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】
微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法