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

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