使用tarfile模块可轻松处理tar.gz文件。首先通过'tarfile.open(filename, mode)'打开文件,读取时用'r:gz'模式,调用getnames()获取文件列表,extractall()解压全部内容;创建时用'w:gz'模式,add()方法添加文件或目录,并可通过arcname指定归档路径;为防止路径遍历攻击,应验证成员路径安全性,确保其在目标目录内再提取。该模块适用于日常备份与分发任务,操作简单且功能强大。
Python 中处理 tar.gz 文件非常方便,主要使用内置的 tarfile 模块。它可以用来读取、创建、压缩和解压 .tar.gz 格式的文件。下面介绍如何用 Python 读取和创建这种压缩包。
要查看或提取一个已有的 .tar.gz 文件内容,可以使用 tarfile.open() 方法,并指定模式为 'r:gz'。
getnames() 获取文件列表extractall() 解压全部内容示例代码:
import tarfile打开并读取 tar.gz 文件
with tarfile.open('example.tar.gz', 'r:gz') as tar:
查看压缩包中的文件名
print(tar.getnames()) # 解压所有文件到当前目录 tar.extractall(path='.') # 或者只提取某个文件 # tar.extract('file.txt')创建 tar.gz 文件
你可以将一个或多个文件打包并压缩成
.tar.gz文件。模式设为'w:gz'表示写入 gzip 压缩的 tar 文件。示例:把多个文件加入压缩包
import tarfile创建一个新的 tar.gz 文件
with tarfile.open('new_archive.tar.gz', 'w:gz') as tar:
添加单个文件
tar.add('file1.txt', arcname='file1.txt') # 添加整个目录(会递归包含子目录) tar.add('my_folder/', arcname='my_folder') # 可以添加多个文件 # tar.add('file2.jpg')
注意:
arcname参数用于设置在压缩包内的路径名称,避免保存绝对路径。检查并安全提取 tar.gz 文件
直接解压用户提供的压缩包可能存在路径遍历风险(如文件名包含
../)。建议先验证成员路径是否安全。安全提取示例:
import os import tarfiledef is_safe_path(path, base="/tmp"): """检查路径是否在目标基目录内""" return os.path.realpath(path).startswith(base)
with tarfile.open('untrusted.tar.gz', 'r:gz') as tar: for member in tar.getmembers(): if is_safe_path(os.path.join('.', member.name)): tar.extract(member, path='.') else: print(f"危险路径,跳过: {member.name}")
基本上就这些。tarfile 模块功能强大又简单,适合日常做备份、分发或归档任务。只要注意压缩与解压时的路径问题,基本不会出错。
相关文章: 如何快速辨别茅台真假?关键步骤解析 如何通过网站建站时间优化SEO与用户体验? 平台云上自助建站如何快速打造专业网站? PHP 500报错的快速解决方法 如何在西部数码注册域名并快速搭建网站? 头像制作网站在线制作软件,dw网页背景图像怎么设置? 常州自助建站:操作简便模板丰富,企业个人快速搭建网站 西安大型网站制作公司,西安招聘网站最好的是哪个? 网站制作公司广州有几家,广州尚艺美发学校网站是多少? 西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么? 测试制作网站有哪些,测试性取向的权威测试或者网站? c# 在高并发场景下,委托和接口调用的性能对比 建站主机CVM配置优化、SEO策略与性能提升指南 如何选择高效可靠的多用户建站源码资源? 如何零基础开发自助建站系统?完整教程解析 网站制作多少钱一个,建一个论坛网站大约需要多少钱? 导航网站建站方案与优化指南:一站式高效搭建技巧解析 如何选择建站程序?包含哪些必备功能与类型? 如何通过FTP服务器快速搭建网站? 如何通过商城免费建站系统源码自定义网站主题? 如何在局域网内绑定自建网站域名? 关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework) 建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析 如何高效生成建站之星成品网站源码? 香港服务器WordPress建站指南:SEO优化与高效部署策略 武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的? 高性价比服务器租赁——企业级配置与24小时运维服务 网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱? 长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的? 如何用好域名打造高点击率的自主建站? 南宁网站建设制作定制,南宁网站建设可以定制吗? 如何将凡科建站内容保存为本地文件? 详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七) 微网站制作教程,我微信里的网站怎么才能复制到浏览器里? 较简单的网站制作软件有哪些,手机版网页制作用什么软件? css网站制作参考文献有哪些,易聊怎么注册? 淘宝制作网站有哪些,淘宝网官网主页? 如何快速生成凡客建站的专业级图册? 网站制作公司排行榜,抖音怎样做个人官方网站 如何获取上海专业网站定制建站电话? 定制建站哪家更专业可靠?推荐榜单揭晓 电商平台网站制作流程,电商网站如何制作? 如何通过虚拟主机快速搭建个人网站? GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息? 企业网站制作公司网页,推荐几家专业的天津网站制作公司? 浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样? 岳西云建站教程与模板下载_一站式快速建站系统操作指南 Python lxml的etree和ElementTree有什么区别 建站主机与虚拟主机有何区别?如何选择最优方案?
*请认真填写需求信息,我们会在24小时内与您取得联系。