python 文件解压缩

这篇具有很好参考价值的文章主要介绍了python 文件解压缩。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python 文件解压缩

# 使用的模块
import tarfile
import zipfile
import gzip
import rarfile
import lzma
import bz2

1. zip 解压

import zipfile
def decompress_zip(zip_path, dir_path):
    """
    zip 文件解压
    :param zip_path: zip 压缩包路径
    :param dir_path: 解压路径
    :return:
    """
    f = zipfile.ZipFile(zip_path, 'r')  # 压缩文件位置
    for file in f.namelist():
        f.extract(file, dir_path)  # 解压位置
    f.close()

2. zip 压缩

import os
import zipfile
def compression_zip(dir_path, out_put_zip_path):
    """
    压缩指定文件夹
    :param dir_path: 目标文件夹路径
    :param out_put_zip_path: 压缩文件保存路径+xxxx.zip
    :return: 无
    """
    # 目录切换
    os.chdir(dir_path)
    zip_ = zipfile.ZipFile(out_put_zip_path, "w", zipfile.ZIP_DEFLATED)  # outFullName为压缩文件的完整路径
    for path, dir_names, filenames in os.walk("./"):
        # 过滤 .git 文件夹
        new_root = path.replace("\\", "/")
        for filename in filenames:
            file_path = f"{new_root}/{filename}"
            if not os.path.exists(file_path):
                continue
            zip_.write(os.path.join(new_root, filename))
    zip_.close()


def compression_zip_files(file_list, out_put_zip_path):
    """
    压缩多个文件
    :param file_list: 目标文件列表路径
    :param out_put_zip_path: 压缩文件保存路径+xxxx.zip
    :return: 无
    """
    zip_ = zipfile.ZipFile(out_put_zip_path, "w", zipfile.ZIP_DEFLATED)  # outFullName为压缩文件的完整路径
    for file_name in file_list:
        if not os.path.exists(file_name):
            continue
        zip_.write(file_name)
    zip_.close()

3. tar 解压

import os
import tarfile
import shutil
def decompress_tar(tar_file_name, dir_name):
    """
    tar 文件解压
    :param tar_file_name: .tar 文件路径
    :param dir_name: 解压路径
    :return:
    """
    try:
        if not os.path.exists(tar_file_name):
            return False
        tar = tarfile.TarFile(tar_file_name)
        names = tar.getnames()
        print(names)
        if not os.path.exists(dir_name):
            os.mkdir(dir_name)
        else:
            shutil.rmtree(dir_name)
            os.mkdir(dir_name)
        for name in names:
            tar.extract(name, dir_name)
        tar.close()
        return True
    except Exception as e:
        print(f"文件tar 解压异常。{e} - {tar_file_name}")
    return False

4. tar 压缩

import os
import tarfile
def compression_tar_dir(dir_path, output_tar_path):
    """
    压缩文件夹
    只打包 .tar
    w: == w
    :param dir_path: 文件夹路径
    :param output_tar_path: 输出文件 .tar
    :return:
    """
    t = tarfile.open(output_tar_path, "w:")
    for root, dir, files in os.walk(dir_path):
        print(root, dir, files)
        for file in files:
            full_path = os.path.join(root, file)
            t.add(full_path)
    t.close()
def compression_tar_files(file_list, output_tar_path):
    """
    压缩多个文件
    只打包 .tar
    :param file_list: 文件列表路径
    :param output_tar_path: 输入文件 .tar
    :return:
    """
    t = tarfile.open(output_tar_path, "w:")
    for file in file_list:
        if not os.path.exists(file):
            continue
        t.add(file)
    t.close()

5. gz 解压

import gzip
def decompress_gz(gz_file_name, file_name):
    """
    gz 文件解压
    :param gz_file_name: gz 文件路径
    :param file_name: 解压后文件路径
    :return:
    """
    # 创建gzip 对象
    g_file_obj = gzip.GzipFile(gz_file_name, "rb")
    with open(file_name, "wb") as f:
        f.write(g_file_obj.read())
    # 关闭 gzip 对象
    g_file_obj.close()

6. gz 压缩

  • 注意:gz 压缩通常是对一个文件操作的,所以需要与其他工具模块一同使用。
  • 一般是tar 打包,gz压缩
import gzip
gz_file = gzip.GzipFile(filename="image.jpg",
           mode="wb", compresslevel=9, fileobj=open("C:\\test.gzip", "wb"))
"""
【参数说明】
	filename: 需要被压缩文件的名称
	mode:和普通文件的模式相同,读或写等,此时创建压缩文件,因此为写模式
	compresslevel: 压缩级别,取值为0~9,9为最大压缩比
	fileobj: 此处参数为压缩文件对象,其它可选为io.BytesIO对象,或其他类似文件对象
"""

def compression_gz(file_name, gz_file_name):
    """
    gz 文件压缩
    :param file_name:
    :param gz_file_name:
    :return:
    """
    # 创建gzip 对象
    g_file_obj = gzip.GzipFile(gz_file_name, "wb")
    with open(file_name, "rb") as f:
        g_file_obj.write(f.read())
    # 关闭 gzip 对象
    g_file_obj.close()

7. .tar.gz | .tgz 解压

8. .tar.gz | .tgz 压缩

import os
import tarfile
def compression_tar_dir_gz(dir_path, output_tar_path):
    """
    压缩文件夹
    w:gz 打包压缩 .tar.gz == .tgz
    :param dir_path: 文件夹路径
    :param output_tar_path: 输出文件 .tar
    :return:
    """
    t = tarfile.open(output_tar_path, "w:gz")
    for root, dir, files in os.walk(dir_path):
        print(root, dir, files)
        for file in files:
            full_path = os.path.join(root, file)
            t.add(full_path)
    t.close()

def compression_tar_files_gz(file_list, output_tar_path):
    """
    压缩多个文件
    打包压缩 .tar.gz
    :param file_list: 文件列表路径
    :param output_tar_path: 输入文件 .tar
    :return:
    """
    t = tarfile.open(output_tar_path, "w:gz")
    for file in file_list:
        if not os.path.exists(file):
            continue
        t.add(file)
    t.close()

9. .rar 压缩

10. .rar 解压

import os
import rarfile
def decompress_rar(rar_file_name, dir_name):
    """
    .rar 文件解压
    :param rar_file_name: rar 文件路径
    :param dir_name: 文件解压目录
    :return:
    """
    # 创建 rar 对象
    rar_obj = rarfile.RarFile(rar_file_name)
    # 目录切换
    if not os.path.exists(dir_name):
        os.mkdir(dir_name)
    os.chdir(dir_name)
    # Extract all files into current directory.
    rar_obj.extractall()
    # rar_obj.extractall(dir_name)
    # 关闭
    rar_obj.close()

11. .tar.xz 解压 --> tar 文件

import shutil
import lzma
def tar_xz_process(save_file_path):
   """.tar.xz 文件处理"""
   # xz 解压
   tar_file_path = save_file_path.replace(".tar.xz", ".tar")
   with lzma.open(save_file_path, "rb") as input_:
       with open(tar_file_path, "wb") as f:
           shutil.copyfileobj(input_, f)
   return tar_file_path

12. .xz 压缩 <-- 文件

import lzma
import shutil

input_file = "test_a.tar"
output_xz_file = "test_a.tar.xz"
with open(input_file, 'rb') as input_:
    with lzma.open(output_xz_file, 'wb') as output_:
        shutil.copyfileobj(input_, output_)

13. .tar.bz2 解压 --> tar 文件

import bz2
def tar_bz2_process(save_file_path):
   """.tar.bz2 文件处理"""
   tar_file_path = save_file_path.replace(".tar.bz2", ".tar")
   bz2_obj = bz2.BZ2File(save_file_path)
   with open(tar_file_path, "wb") as f:
       f.write(bz2_obj.read())
   bz2_obj.close()
   return tar_file_path

12. .tar.bz2 压缩 <-- tar 文件

示例脚本

链接:https://pan.baidu.com/s/1T2oBj2gJGx90mQZF5Y6C5A
提取码:25p1文章来源地址https://www.toymoban.com/news/detail-813370.html

到了这里,关于python 文件解压缩的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux zip命令压缩与解压

    1、unzip windows常见的压缩包有rar和zip格式,如果要将压缩包上传到Linux上再解压,就要使用unzip命令。以下是unzip常见命令: 没有unzip可以使用yum安装 2、zip 如果需要将Linux下的文件传输到Windows上,可以使用zip命令 压缩命令 常用参数:

    2024年02月10日
    浏览(45)
  • Linux上实现分片压缩及解压分片zip压缩包 - 及zip、unzip命令详解

    👨‍🎓 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏

    2024年02月11日
    浏览(44)
  • linux中的压缩解压命令:gzip,tar,zip,bzip2

    命令名称:gzip 语法:gzip  文件 功能:压缩文件 压缩后文件格式:.gz 例子1  如上图所示,先用touch命令创建一个新文件file1,然后使用gzip压缩该文件。 例子2 如上图所示,先用cp命令将/etc/services文件复制到/root目录下并改名为file2,通过ls -l 命令可见该文件的大小为670293B,

    2024年02月05日
    浏览(94)
  • Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream

       用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。ZipEntry是用来创建压缩文件的。    举个例子,向压缩文件中添加一个文件的代码: 如下图:    在创建ZipEntry对象时可以指定文件在压缩包的位置:new ZipEntry(“second-dirsecond-01.txt”)    在使用ZipOutputStrea

    2024年02月16日
    浏览(46)
  • Java 压缩多个文件为zip包(中间不生成临时文件,直接压缩为zip二进制流),以及解压zip包二进制流为文件

    这篇博客将提供俩种方法, 提前生成要压缩的多个文件,然后读取文件夹多层或一层去遍历压缩zip包 直接用原始文件名称及二进制流,压缩返回zip包二进制流,中间不生成冗余文件; 很明显方法2更优一些; 解压zip文件或者zip文件流验证; 压缩俩个文件到zip包,并分别解析

    2024年02月06日
    浏览(52)
  • Linux中文件的打包压缩、解压,下载到本地——zip,tar指令等

    目录 1 .zip后缀名:         1.1 zip指令         1.2 unzip指令 2 .tar后缀名 3. sz 指令 4. rz 指令 5. scp指令 语法:zip [namefile.zip]  [namefile]... 功能:将目录或者文件压缩成zip格式 常用选项:         -r : 递归处理,将指定目录下的所有文件和子目录一并处理。 语法:unzip [namefil

    2024年01月24日
    浏览(51)
  • Linux(Centos7)基本操作(1):文件压缩和解压(tar、zip)

    安装命令 yum install -y unzip zip 压缩文件: 基本格式: zip [参数] [压缩后的文件名] [打包的目录路径] 压缩文件:xxx是当前路径中需要压缩的文件夹: zip -r xxx.zip xxx/ ; 比如需要压缩文件夹 a 下所有的内容,就执行 zip -r a.zip a ; 如果是将其他目录下的文件压缩到当前路径,xxx前面

    2024年02月08日
    浏览(53)
  • 微信小程序下载zip压缩包后解压,并且打开文件查看的内容

            在开发pc端后台管理系统的时候,经常会遇到这样的需求:下载zip到本地,然后用户双击压缩包,并借助电脑端的压缩软件打开压缩包,就可以查看里面的word、excel、pdf文件里面的内容。(这种需求,毫无疑问,对于我们前端开发工程师来说,已经是习以为常了)。

    2024年02月08日
    浏览(51)
  • Linux中_使用tar_gzip_zip_rar_命令_打包和解包_压缩和解压

    1.3.1、到当前目录下 1.3.2、到指定目录下 3.1.1、压缩当前目录: 3.1.2、压缩指定目录: 3.2.1、到当前目录 3.2.2、到指定目录 4.2.1、压缩文件本身: 4.2.2、递归压缩,将指定目录下所有文件和子目录一并压缩:

    2024年02月04日
    浏览(58)
  • 轻量级力量:深入MiniZip库,实现C++中ZIP文件的简便压缩与解压

      MiniZip是一个轻量级的压缩库,它是zlib库的一部分,用于在C++中进行ZIP文件的压缩和解压缩操作。以下是MiniZip的一些功能和优点: 功能: 创建ZIP文件:  MiniZip可以用于创建包含一个或多个文件的ZIP归档。 压缩:  MiniZip支持使用不同的压缩算法对文件进行压缩,例如DEFL

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包