如何在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)
在这个例子中,我们首先导入了os和bz2模块。然后,定义了一个compress_directory函数,它接受一个文件夹路径和一个输出文件路径作为输入。
在函数内部,我们首先创建了一个输出文件,使用BZ2File函数打开一个文件对象并指定写入模式。该文件对象可以用于写入压缩后的数据。
然后,我们使用os.walk函数遍历目录下的所有文件和子文件夹。对于每一个文件,我们首先获取它的绝对路径。
接下来,我们使用open函数打开文件对象,并指定以二进制模式读取文件。然后,读取文件的内容,并使用bz2.compress函数对其进行压缩。
最后,我们将压缩后的数据写入到输出文件中。
在测试部分,我们指定了要压缩的文件夹路径和压缩输出文件路径,并调用compress_directory函数来执行压缩操作。
请注意,上述代码仅压缩了文件夹中的文件,而不压缩文件夹本身。如果需要压缩文件夹本身,可以在遍历文件和子文件夹之前,将目录路径添加到压缩文件中。
