首页 > 编程知识 正文

Python文件压缩和解压缩

时间:2023-11-22 04:04:12 阅读:287568 作者:LADQ

本文将详细介绍如何使用Python进行文件压缩和解压缩,包括zip和tar文件的创建、添加和读取;还将介绍如何使用gzip进行文件压缩和解压缩以及如何使用shutil模块进行文件夹的压缩和解压缩。

一、zip文件的创建、添加和读取

zip是一种常见的压缩格式,Python的zipfile模块提供了操作zip文件的功能。下面是zip文件的创建、添加和读取示例代码:

import zipfile

# 创建zip文件
with zipfile.ZipFile('example.zip', 'w') as myzip:
    myzip.write('file1.txt')
    myzip.write('file2.txt')

# 添加文件到zip中
with zipfile.ZipFile('example.zip', 'a') as myzip:
    myzip.write('file3.txt')

# 读取zip中的文件列表
with zipfile.ZipFile('example.zip', 'r') as myzip:
    print(myzip.namelist()) # 打印文件列表

# 读取zip中的单个文件
with zipfile.ZipFile('example.zip', 'r') as myzip:
    with myzip.open('file1.txt') as myfile:
        print(myfile.read()) # 打印文件内容

二、tar文件的创建、添加和读取

tar文件通常用于Unix和Linux系统中,Python的tarfile模块提供了操作tar文件的功能。下面是tar文件的创建、添加和读取示例代码:

import tarfile

# 创建tar文件
with tarfile.open('example.tar', 'w') as mytar:
    mytar.add('file1.txt')
    mytar.add('file2.txt')

# 添加文件到tar中
with tarfile.open('example.tar', 'a') as mytar:
    mytar.add('file3.txt')

# 读取tar中的文件列表
with tarfile.open('example.tar', 'r') as mytar:
    print(mytar.getnames()) # 打印文件列表

# 读取tar中的单个文件
with tarfile.open('example.tar', 'r') as mytar:
    with mytar.extractfile('file1.txt') as myfile:
        print(myfile.read()) # 打印文件内容

三、gzip文件的压缩和解压缩

gzip是一种常见的压缩格式,Python的gzip模块提供了操作gzip文件的功能。下面是gzip文件的压缩和解压缩示例代码:

import gzip

# 压缩文件
with open('file1.txt', 'rb') as myfile:
    with gzip.open('file1.txt.gz', 'wb') as myzip:
        myzip.write(myfile.read())

# 解压文件
with gzip.open('file1.txt.gz', 'rb') as myzip:
    with open('file1.txt', 'wb') as myfile:
        myfile.write(myzip.read())

四、shutil模块进行文件夹的压缩和解压缩

shutil模块是Python标准库中的一个文件操作模块,提供了对文件和文件夹的操作。下面是使用shutil模块进行文件夹的压缩和解压缩的示例代码:

import shutil

# 压缩文件夹
shutil.make_archive('example', 'zip', 'example_folder')

# 解压文件夹
shutil.unpack_archive('example.zip', 'example_unzip_folder')

上述代码中,make_archive用于压缩文件夹,其中第一个参数是压缩后的文件名前缀,第二个参数是压缩格式,第三个参数是要压缩的文件夹名称;unpack_archive用于解压文件夹,其中第一个参数是要解压的文件名,第二个参数是要解压到的文件夹名称。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。