python 之 tar.gz格式压缩、解压

本文介绍如何使用Python进行tar.gz格式文件的打包与解压,包括两种打包方式及解压缩方法,并提供具体代码实例。
部署运行你感兴趣的模型镜像
  • python 之 tar.gz格式压缩、解压

tar和tar.gz工具区别

tar文件只是把文件打包,文件大小没发生变化;tar.gz是把文件压缩了。

简述:

通常使用python实现将文件或文件夹使用相对路径打包为tar.gz文件,而默认情况下。使用tarfile打包成tar.gz之后会默认带绝对路径。很多情况下,需要的是相对路径的压缩包。

实现代码:

例如打包E:\Work\python\01\test的文件夹。

import os, tarfile

tmp_tar_dir = r'E:\Work\python\01\test'
tmp_filename = "test.tar.gz"
tmp_dir = r'E:\Work\python\01'

#一次性打包整个根目录。空子目录会被打包。
#如果只打包不压缩,将"w:gz"参数改为"w:"或"w"即可。
def make_targz(output_filename, source_dir):
  with tarfile.open(output_filename, "w:gz") as tar:
    tar.add(source_dir, arcname=os.path.relpath(tmp_dir))

#逐个添加文件打包,未打包空子目录。可过滤文件。
#如果只打包不压缩,将"w:gz"参数改为"w:"或"w"即可。
def make_targz_one_by_one(output_filename, source_dir):
  tar = tarfile.open(output_filename,"w:gz")
  for root,dir,files in os.walk(source_dir):
    root_ = os.path.relpath(root,start=source_dir)
    for file in files:
      pathfile = os.path.join(root, file)
      tar.add(pathfile, arcname=os.path.join(root_,file))
  tar.close()

# 解压缩
def untar(fname, dirs):
    t = tarfile.open(fname)
    t.extractall(path = dirs) 

if __name__ == "__main__":

    make_targz("test.tar.gz", tmp_tar_dir)
    make_targz_one_by_one("test1.tar.gz",tmp_tar_dir)
    untar(r'E:\Work\python\01\test.tar.gz', r'E:\Work\python\01\os')      

运行与测试

 python -u "e:\Work\python\01\tar.py"

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python解压 `.tar.gz` 文件可以使用 `tarfile` 模块,该模块提供了对 `.tar`、`.tar.gz`(也称为 `.tgz`)等归档文件的支持。以下是一个完整的示例,演示如何使用 Python 解压 `.tar.gz` 文件。 ### 示例代码 ```python import tarfile def extract_tar_gz(file_path, extract_to): """ 解压 .tar.gz 文件到指定目录 :param file_path: .tar.gz 文件的路径 :param extract_to: 解压目标目录 """ with tarfile.open(file_path, "r:gz") as tar: tar.extractall(path=extract_to) print(f"文件 {file_path} 已成功解压到 {extract_to}") # 示例调用 file_path = "example.tar.gz" extract_to = "./extracted_files" extract_tar_gz(file_path, extract_to) ``` ### 说明 - `tarfile.open(file_path, "r:gz")`:以读取 `.tar.gz` 文件的方式打开文件。 - `tar.extractall(path=extract_to)`:将所有内容解压到指定目录。 - `with` 语句确保文件在操作完成后正确关闭,避免资源泄露。 ### 部分提取文件 如果你只想提取 `.tar.gz` 文件中的部分文件,而不是全部内容,可以使用 `extract` 方法指定具体的文件名。 ```python def extract_specific_file_from_tar_gz(file_path, extract_to, specific_file): """ 从 .tar.gz 文件中提取特定文件 :param file_path: .tar.gz 文件的路径 :param extract_to: 解压目标目录 :param specific_file: 要提取的文件名 """ with tarfile.open(file_path, "r:gz") as tar: tar.extract(specific_file, path=extract_to) print(f"文件 {specific_file} 已从 {file_path} 解压到 {extract_to}") # 示例调用 specific_file = "bar/four" extract_specific_file_from_tar_gz(file_path, extract_to, specific_file) ``` 上述代码将只解压 `bar/four` 文件到指定目录 [^4]。 ### 其他注意事项 - 如果需要处理 `.tar`(未压缩tar 文件)或 `.tgz`(等同于 `.tar.gz`)文件,只需修改 `tarfile.open()` 中的模式即可。 - `tarfile` 模块支持多种压缩格式,如 `.tar.bz2`、`.tar.xz` 等。 - 如果你从远程(如 FTP 或 HTTP)下载 `.tar.gz` 文件,可以先使用 `requests` 或 `ftplib` 模块下载文件,再用 `tarfile` 处理解压 [^1]。 ### 异常处理 在实际使用中,建议加入异常处理机制,以确保文件路径错误或文件损坏时程序不会崩溃。 ```python try: with tarfile.open(file_path, "r:gz") as tar: tar.extractall(path=extract_to) except FileNotFoundError: print(f"错误:文件 {file_path} 不存在") except tarfile.TarError as e: print(f"解压失败:{e}") ``` ### 总结 Python 提供了强大的 `tarfile` 模块来处理 `.tar.gz` 文件,支持完整的解压和部分提取功能。结合 `with` 语句和异常处理,可以确保代码的安全性和稳定性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值