欢迎访问宙启技术站
智能推送

使用Python进行文件压缩和解压缩的案例

发布时间:2023-12-04 20:48:20

文件压缩是将一个或多个文件转换为较小大小的存档文件,这可以节省磁盘空间并方便文件传输。Python提供了多种库来进行文件的压缩和解压缩操作,包括zipfile、gzip、tarfile等。

下面是一个使用zipfile库进行文件压缩和解压缩的例子:

压缩文件:

import zipfile

def compress_files(file_paths, output_path):
    with zipfile.ZipFile(output_path, 'w') as zipf:
        for file in file_paths:
            zipf.write(file)

files = ['file1.txt', 'file2.txt', 'file3.txt']
output = 'compressed.zip'

compress_files(files, output)

上述代码中,compress_files函数接收一个包含多个文件路径的列表file_paths和输出压缩文件的路径output_path。使用zipfile.ZipFile创建一个ZipFile对象,并使用w模式打开文件,表示写入操作。然后使用write方法将每个文件写入到压缩文件中。

解压文件:

import zipfile

def extract_files(zip_path, output_dir):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        zipf.extractall(output_dir)

compressed_file = 'compressed.zip'
output_directory = 'extracted_files'

extract_files(compressed_file, output_directory)

上述代码中,extract_files函数接收一个压缩文件的路径zip_path和解压缩后文件存放的目录output_dir。使用zipfile.ZipFile打开压缩文件,使用r模式表示只读操作。然后使用extractall方法解压缩到指定的目录。

除了zipfile库,Python还提供了gzip和tarfile库用于压缩和解压缩文件。

使用gzip库进行文件压缩和解压缩的例子:

压缩文件:

import gzip

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

input_file = 'file.txt'
output_file = 'compressed.gz'

compress_file(input_file, output_file)

上述代码中,compress_file函数接收一个输入文件的路径file_path和输出压缩文件的路径output_path。使用open打开输入文件和gzip.open打开输出文件,分别用rb和wb模式表示读取和写入二进制数据。然后使用writelines方法将输入文件的内容写入到输出文件中。

解压文件:

import gzip

def extract_file(zip_path, output_file):
    with gzip.open(zip_path, 'rb') as f_in:
        with open(output_file, 'wb') as f_out:
            f_out.writelines(f_in)

compressed_file = 'compressed.gz'
output_file = 'file.txt'

extract_file(compressed_file, output_file)

上述代码中,extract_file函数接收一个压缩文件的路径zip_path和解压缩后文件的路径output_file。使用gzip.open打开压缩文件和open打开输出文件,分别用rb和wb模式表示读取和写入二进制数据。然后使用writelines方法将压缩文件的内容写入到输出文件中。

使用tarfile库进行文件压缩和解压缩的例子与上述类似, 只是在tarfile.open的时候需要指定压缩或解压缩的模式。

需要注意的是,以上的例子仅展示了如何进行压缩和解压缩操作,并未涉及文件的操作权限、异常处理等内容,实际应用中需根据具体需求进行相应的处理。