Python中_IO模块实现大文件的分块读写和合并的实例代码
发布时间:2024-01-06 05:07:05
在Python中,可以使用_IO模块实现大文件的分块读写和合并。下面是一个实例代码,包括分块读写和文件合并的函数,并提供了一个使用例子。
实例代码如下:
import os
def split_file(file_path, chunk_size=1024):
"""
分块读取大文件,并保存为多个小文件
"""
# 创建保存分块数据的文件夹
folder_name = file_path.split('.')[0] + '_chunks'
if not os.path.exists(folder_name):
os.makedirs(folder_name)
# 打开大文件
with open(file_path, 'rb') as f:
index = 0
while True:
# 读取指定大小的数据
data = f.read(chunk_size)
if not data:
break
# 拼接分块文件的路径
chunk_file_path = os.path.join(folder_name, f'{index}.chunk')
# 写入分块文件
with open(chunk_file_path, 'wb') as chunk_file:
chunk_file.write(data)
index += 1
def merge_files(folder_name, merged_file_path):
"""
合并多个小文件为一个大文件
"""
# 获取文件夹中的所有分块文件
chunk_files = [os.path.join(folder_name, f) for f in os.listdir(folder_name)]
# 按文件名顺序合并数据
with open(merged_file_path, 'wb') as merged_file:
for chunk_file in sorted(chunk_files, key=lambda x: int(x.split('/')[-1].split('.')[0])):
with open(chunk_file, 'rb') as f:
merged_file.write(f.read())
# 使用例子
# 分块读写大文件
split_file('large_file.txt', 1024)
# 合并多个小文件为一个大文件
merge_files('large_file_chunks', 'merged_file.txt')
使用例子:
假设有一个名为large_file.txt的大文件,我们可以使用split_file函数将其分块读取,并保存为多个小文件。然后,可以使用merge_files函数将这些小文件合并为一个大文件。
# 分块读写大文件
split_file('large_file.txt', 1024)
# 合并多个小文件为一个大文件
merge_files('large_file_chunks', 'merged_file.txt')
在这个例子中,默认的分块大小为1024字节。你可以根据实际需求调整该值。分块读写大文件的过程中,使用了二进制模式打开文件,以确保正确地读取和写入数据。合并多个小文件时,通过将文件名按照数字进行排序,确保合并的顺序与分块的顺序一致。最终得到的合并文件为merged_file.txt。
