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

Python读取25000行以上TXT文件仅输出490行,求代码修改方案

Python读取大体积TXT文件仅输出490行的修正方案

问题根因

  • 未添加异常捕获逻辑:当文件中某一行格式不符合预期(比如分割后元素少于3个、存在无法转换为浮点数的非数字内容)时,程序会直接终止运行,仅输出终止前的490行结果,大概率第491行就是格式异常行
  • 循环内部重复初始化y列表:如果需要汇总所有行的第三列数据,当前写法会导致y每次仅存储当前行的第三列值,无法累积全量结果
  • 未安全管理文件句柄:文件打开后没有显式关闭,存在资源泄漏风险

修正后代码

# 初始化y放在循环外部,可累积所有行的第三列数据
y = []
# 使用with上下文管理器,自动处理文件关闭逻辑
with open('file2.txt', 'r', encoding='utf-8') as f:
    for line_num, line in enumerate(f, start=1):
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        try:
            data = list(map(float, line.split()))
            # 校验分割后元素数量是否满足取第三列的要求
            if len(data) >= 3:
                current_val = data[2]
                y.append(current_val)
                print(current_val)
            else:
                print(f"第{line_num}行元素不足3个,跳过该行,内容为:{line}")
        except ValueError as e:
            print(f"第{line_num}行存在无法转换为浮点数的内容,跳过该行,内容为:{line},错误信息:{e}")

# 如果需要查看全量的第三列数据,可取消注释下面的语句
# print(y)

修正说明

  • 新增异常捕获和格式校验逻辑,遇到格式异常的行只会打印提示并跳过,不会终止整个文件的读取,可以跑完25000+行的全量内容
  • 用with关键字管理文件打开操作,读取结束后会自动关闭文件,无需手动调用close()
  • 增加行号计数和异常提示,方便定位不符合格式要求的行,后续可针对性处理源文件的异常内容
  • 把y列表的初始化放到循环外部,会累积所有符合要求的行的第三列值,如果你只需要逐行打印不需要累积,把y相关的代码删掉即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:45:05