You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将多个大文本文件的整数逐行求和输出到新文件

问题排查

你的代码存在3个核心错误:

  • 未做数值转换:row.split()返回字符串列表,直接执行+操作是列表拼接而非数值求和,完全没有实现加法逻辑
  • 内存占用不符合要求:你把第一个文件的1亿行全存入sums数组,会占用几百MB甚至更多内存,违背了你不加载全量文件的需求
  • 输出逻辑完全错误:你最后直接把遍历到的最后一个文件(也就是file2_1.txt)的内容复制到输出文件,计算得到的sums数组根本没有写入输出文件,这也是你只看到第二个文件内容的直接原因
低内存单进程实现方案

该方案逐行同步读取所有文件的对应行,内存仅保留当前行的计算数据,完全不加载全量文件内容,适配1亿行大文件场景。如果文件行数不一致,会自动以最短文件的行数作为终止条件,刚好适配你所有文件均为1亿行的场景:

# 生成10个待处理文件的文件名,按需修改range参数即可
filenames = [f'file2_{i}.txt' for i in range(10)]

# 批量打开所有输入文件
input_files = [open(file, 'r', encoding='utf-8') for file in filenames]

with open('total_file.txt', 'w', encoding='utf-8') as out_file:
    # 同步迭代所有文件的对应行
    for rows in zip(*input_files):
        # 转整数求和后写入输出文件
        line_sum = sum(int(row.strip()) for row in rows)
        out_file.write(f"{line_sum}\n")

# 关闭所有输入文件句柄
for f in input_files:
    f.close()
并发优化说明

你的场景属于IO密集型任务,大部分耗时集中在磁盘读写,使用多线程可以有效提升处理效率:

  • 可以使用concurrent.futures.ThreadPoolExecutor实现并行处理,注意要按行序写入结果,避免输出内容错乱
  • 如果后续要叠加复杂计算逻辑,也可以替换为ProcessPoolExecutor使用多进程规避GIL限制

内容的提问来源于stack exchange,提问作者Mr.Mongo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:54:06