Python读取文本文件仅识别最后一行 代码错误如何排查?
代码错误排查及修复方案
核心错误原因
- 变量覆盖:第一次遍历文件时,
m/a/E等变量在循环中被反复赋值,循环结束后仅保留最后一行的解析结果 - 二次遍历未解析当前行:第二次打开文件遍历的过程中,未对当前读取的行做拆分解析,所有计算都复用了第一次遍历结束后残留的最后一行变量值,因此三行循环得到的计算结果完全重复
- 冗余操作:无需两次打开读取同一文件,解析和计算可以合并在同一次遍历中完成
- 潜在风险:手动调用
close()关闭文件容易因程序异常退出导致资源未释放,推荐使用with上下文管理器自动处理文件生命周期
修正后可运行代码
calcresults = [] # with上下文管理器会自动关闭文件,无需手动调用close with open("Numbers.txt", "r") as f: for line in f: # 去除行尾换行符后按逗号拆分,每个元素去空格后转成整数 nums = [int(item.strip()) for item in line.strip().split(",")] m, a, e, i, o, O, E = nums # 逐行计算后存入结果列表 calcresults.append(m*2) calcresults.append(m+a) calcresults.append(m+E) print(calcresults) # 写入结果到新文件 with open("Newnumbers.txt", "w") as f: f.write(str(calcresults))
运行结果说明
运行上述代码后输出的calcresults为[2, 3, 8, 4, 6, 16, 2, 4, 14],符合逐行计算的预期逻辑。
内容的提问来源于stack exchange,提问作者Emma H
相关产品推荐
相关产品推荐

