python如何压缩文件

python如何压缩文件

python如何压缩文件

在日常工作和生活中,我们经常会遇到需要压缩文件的情况。文件压缩不仅可以节省存储空间,还可以方便文件传输。Python作为一种功能丰富的编程语言,提供了多种压缩文件的方法,包括zip、tar、gzip等。在本文中,我将详细介绍如何使用Python进行文件压缩,以及如何解压缩已压缩的文件。

1. 使用zipfile模块进行文件压缩

zipfile模块是Python自带的一个用于创建、读取和解压zip文件的模块。我们可以使用zipfile模块来将多个文件或文件夹打包成一个zip文件。

1.1 压缩单个文件为zip

首先,我们需要导入zipfile模块,然后使用ZipFile类创建一个zip文件对象。接下来,使用write()方法将文件添加到zip文件中。最后,关闭zip文件对象。

import zipfile

def zip_file(file_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w') as zipf:
        zipf.write(file_path, arcname=os.path.basename(file_path))

file_path = 'test.txt'
zip_path = 'test.zip'
zip_file(file_path, zip_path)

运行上述代码,就可以将test.txt文件压缩为test.zip。

1.2 压缩文件夹为zip

与压缩单个文件类似,我们只需要将文件夹中的所有文件添加到zip文件中即可。

import zipfile
import os

def zip_folder(folder_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w') as zipf:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                zipf.write(file_path, arcname=os.path.relpath(file_path, folder_path))

folder_path = 'test_folder'
zip_path = 'test_folder.zip'
zip_folder(folder_path, zip_path)

上述代码将test_folder文件夹中的所有文件和子文件夹打包为test_folder.zip。

2. 使用tarfile模块进行文件压缩

tarfile模块是Python的标准库模块,用于创建、读取和解压tar文件。与zipfile类似,我们可以使用tarfile模块将文件和文件夹进行打包和压缩。

2.1 压缩单个文件为tar

import tarfile

def tar_file(file_path, tar_path):
    with tarfile.open(tar_path, 'w') as tarf:
        tarf.add(file_path, arcname=os.path.basename(file_path))

file_path = 'test.txt'
tar_path = 'test.tar'
tar_file(file_path, tar_path)

2.2 压缩文件夹为tar

import tarfile
import os

def tar_folder(folder_path, tar_path):
    with tarfile.open(tar_path, 'w') as tarf:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                tarf.add(file_path, arcname=os.path.relpath(file_path, folder_path))

folder_path = 'test_folder'
tar_path = 'test_folder.tar'
tar_folder(folder_path, tar_path)

3. 使用gzip模块进行文件压缩

gzip模块是Python的标准库模块,用于对文件进行gzip压缩。gzip压缩通常用于对单个文件进行压缩,所以我们只需要指定要进行压缩的文件和压缩后的文件名即可。

import gzip

def gzip_file(file_path, gzip_path):
    with open(file_path, 'rb') as f_in:
        with gzip.open(gzip_path, 'wb') as f_out:
            f_out.writelines(f_in)

file_path = 'test.txt'
gzip_path = 'test.txt.gz'
gzip_file(file_path, gzip_path)

运行上述代码,test.txt文件将被压缩为test.txt.gz。

4. 解压缩文件

除了压缩文件,Python还提供了对压缩文件进行解压缩的方法。

4.1 解压缩zip文件

import zipfile

def unzip_file(zip_path, extract_path):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        zipf.extractall(extract_path)

zip_path = 'test.zip'
extract_path = 'test_folder'
unzip_file(zip_path, extract_path)

4.2 解压缩tar文件

import tarfile

def untar_file(tar_path, extract_path):
    with tarfile.open(tar_path, 'r') as tarf:
        tarf.extractall(extract_path)

tar_path = 'test.tar'
extract_path = 'test_folder'
untar_file(tar_path, extract_path)

4.3 解压缩gzip文件

import gzip

def ungzip_file(gzip_path, extract_path):
    with gzip.open(gzip_path, 'rb') as f_in:
        with open(extract_path, 'wb') as f_out:
            f_out.writelines(f_in)

gzip_path = 'test.txt.gz'
extract_path = 'test.txt'
ungzip_file(gzip_path, extract_path)

通过上述方法,我们可以轻松地对文件进行压缩和解压缩操作。Python提供了丰富的标准库模块,使得文件处理变得更加便捷。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程