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

Python如何逐行编辑大文件并在每行处理后实时写入文件

Python逐行处理大文件列裁剪实现方案

原有代码问题根因

  • 输出仅保留最后一行:循环内每次用w(覆盖写)模式打开输出文件,每处理一行就清空之前写入的所有内容,仅保留最后一次写入结果
  • 输出带列表括号:直接将列表对象test[9:]拼接进字符串,默认调用列表的__str__方法,会自带括号、引号等格式字符
  • write方法误用sep参数:sep是print()函数的参数,file.write()方法不支持该参数,拼接内容时需手动统一用制表符连接

修正后可直接运行代码

# 替换为你的输入文件实际路径,不要用input作为变量名,避免和内置函数冲突
input_file_path = "your_input_file.vcf"
output_file_path = "output.txt"

# 外层一次性打开输出文件,用w模式初始化,循环内直接写入避免重复打开清空
with open(output_file_path, "w", encoding="utf-8") as out_f:
    # 逐行读取输入文件,不会加载整个文件到内存
    with open(input_file_path, "r", encoding="utf-8") as in_f:
        for line in in_f:
            stripped_line = line.strip()
            # 跳过注释行的逻辑保留
            if stripped_line.startswith("#"):
                continue
            # 按制表符拆分列
            cols = stripped_line.split("\t")
            # 取第1、2列(索引0、1)+ 第10列及之后的所有列(索引9开始),全部用制表符连接
            # 末尾加\n保证每行独立
            processed_line = "\t".join([cols[0], cols[1]] + cols[9:]) + "\n"
            # 实时写入文件
            out_f.write(processed_line)

实现特性说明

  • 全程逐行读写,内存仅保留当前处理行的内容,完全适配超大文件场景
  • 所有输出列统一用\t连接,严格符合制表符分隔格式要求
  • 保留了原需求跳过#开头注释行的逻辑
  • 用上下文管理器管理文件句柄,避免资源泄漏问题

内容的提问来源于stack exchange,提问作者neuron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:03