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
相关产品推荐
相关产品推荐

