如何将Python元组列表按指定行数分块写入多个CSV文件
元组列表按行数阈值分块写入多CSV文件实现
核心逻辑
按照自定义的单文件最大行数,将完整的元组列表拆分为连续的子数据块,每个子块独立写入一个带有序号的CSV文件,所有文件保持统一的表头结构,自动兼容最后一个数据块不足阈值的场景。
具体实现步骤
- 提前配置基础参数:表头字段、单文件允许的最大存储行数、输出文件的命名规则(用两位数字对齐序号,避免文件资源管理器里排序错乱)
- 对原元组列表做固定步长切分,形成大小不超过阈值的子数据块
- 循环遍历每个子数据块,打开对应序号的CSV文件,先写入统一表头,再逐行写入当前块的元组数据
- 补充空列表的兼容判断,避免空数据时生成无意义的空文件
可直接复用的示例代码
import csv # 基础配置项 fieldnames = ['A', 'B'] chunk_size = 2 # 单文件存储的最大数据行数 data_list = [(10.01,20.11),(34,20),(33,88),(44,90),(43,99)] # 空数据直接跳过,不生成文件 if not data_list: print("待写入的元组列表为空,不生成CSV文件") else: # 按固定步长切分数据块 chunks = [data_list[i:i+chunk_size] for i in range(0, len(data_list), chunk_size)] # 逐块写入文件 for block_idx, chunk_data in enumerate(chunks, start=1): output_path = f"output_csv_file_{block_idx:02d}.csv" # 加newline=''避免Windows环境下CSV出现空行 with open(output_path, 'w', newline='', encoding='utf-8') as f: writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() for row in chunk_data: writer.writerow({"A": row[0], "B": row[1]})
运行效果匹配
按照示例配置运行时:
- 5条总数据、单块2行的配置,会生成3个文件,和预期的
output_csv_file_01.csv、output_csv_file_02.csv、output_csv_file_03.csv完全对应- 如果总数据为20000条、单块阈值设为5000行,会自动生成4个等大的CSV文件,每个文件包含5000行有效数据
- 最后一个数据块不足阈值时(比如示例里最后只剩1条数据),也会正常生成对应文件,不会出现报错
内容的提问来源于stack exchange,提问作者Neerja Vyas
相关产品推荐
相关产品推荐

