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

如何在Python中使用bz2模块进行文件夹的递归压缩

发布时间:2023-12-19 03:07:30

在Python中,我们可以使用bz2模块来进行文件夹的递归压缩。该模块提供了压缩和解压缩的功能,它是Python标准库中的一个模块,无需额外安装。

以下是一个使用bz2模块进行文件夹的递归压缩的例子:

import os
import bz2


def compress_directory(directory_path, output_path):
    # 创建输出文件
    with bz2.BZ2File(output_path, 'w') as output_file:
        # 遍历目录下的所有文件和子文件夹
        for root, dirs, files in os.walk(directory_path):
            for file_name in files:
                # 获取文件的绝对路径
                file_path = os.path.join(root, file_name)
                
                # 压缩文件
                with open(file_path, 'rb') as input_file:
                    compressed_data = bz2.compress(input_file.read())
                    output_file.write(compressed_data)
    
    print("压缩完成:", output_path)


# 测试
directory_path = "path/to/directory"  # 文件夹路径
output_path = "path/to/output.bz2"  # 压缩输出文件路径

compress_directory(directory_path, output_path)

在这个例子中,我们首先导入了osbz2模块。然后,定义了一个compress_directory函数,它接受一个文件夹路径和一个输出文件路径作为输入。

在函数内部,我们首先创建了一个输出文件,使用BZ2File函数打开一个文件对象并指定写入模式。该文件对象可以用于写入压缩后的数据。

然后,我们使用os.walk函数遍历目录下的所有文件和子文件夹。对于每一个文件,我们首先获取它的绝对路径。

接下来,我们使用open函数打开文件对象,并指定以二进制模式读取文件。然后,读取文件的内容,并使用bz2.compress函数对其进行压缩。

最后,我们将压缩后的数据写入到输出文件中。

在测试部分,我们指定了要压缩的文件夹路径和压缩输出文件路径,并调用compress_directory函数来执行压缩操作。

请注意,上述代码仅压缩了文件夹中的文件,而不压缩文件夹本身。如果需要压缩文件夹本身,可以在遍历文件和子文件夹之前,将目录路径添加到压缩文件中。