Python中如何使用bz2模块对压缩文件进行分块压缩和解压缩
发布时间:2024-01-11 03:08:16
在Python中,可以使用bz2模块对压缩文件进行分块压缩和解压缩。bz2模块提供了BZ2File类,可以用于创建一个可读/写的压缩文件对象。
以下是一个使用bz2模块进行分块压缩和解压缩的例子:
1. 分块压缩文件:
import bz2
def compress(input_file, output_file):
CHUNK_SIZE = 1024
with open(input_file, 'rb') as f_in, bz2.BZ2File(output_file, 'wb') as f_out:
while True:
chunk = f_in.read(CHUNK_SIZE)
if not chunk:
break
f_out.write(chunk)
在上述代码中,定义了一个常量CHUNK_SIZE,表示每次读取的文件块大小。然后,通过open函数打开输入文件和BZ2File类创建压缩文件对象。在循环中,从输入文件中读取块,并将其写入到压缩文件中,直到输入文件被完全读取。
2. 分块解压缩文件:
import bz2
def decompress(input_file, output_file):
CHUNK_SIZE = 1024
with bz2.BZ2File(input_file, 'rb') as f_in, open(output_file, 'wb') as f_out:
while True:
chunk = f_in.read(CHUNK_SIZE)
if not chunk:
break
f_out.write(chunk)
在上述代码中,使用BZ2File类打开压缩文件和open函数创建解压缩文件对象。在循环中,从压缩文件中读取块,并将其写入到输出文件中,直到压缩文件被完全读取。
使用上述代码示例,可以对一个文件进行分块压缩和解压缩。只需调用compress函数,将需要压缩的文件路径和目标压缩文件路径作为参数传递给它,即可压缩文件。同样,调用decompress函数,并传递压缩文件路径和目标解压缩文件路径,即可解压缩文件。
值得注意的是,示例中的代码暂时无法处理目录。如果需要处理目录,可以通过递归的方式遍历目录下的所有文件,并对每个文件进行压缩和解压缩操作。
