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

Python程序读取文本文件时无法读取新行且触发AttributeError异常

问题分析与解决:文件对象被覆盖导致的AttributeError

嘿,这个报错的根源其实一眼就能看穿——你不小心把文件对象给覆盖了!

看你代码里else分支的这行:

f = Furgone(cod, tipo, targa, categoria, posti, modello, marca)

原本f是指向打开的文件对象的,结果你把它重新赋值成了Furgone类的实例。这就导致后面再执行line = f.readline().strip()时,你是在调用一个自定义类对象的readline方法,而你的Furgone类根本没实现这个方法,自然就抛出了AttributeError。

修正方案

把Furgone实例的变量名改成别的,别再用f占用文件对象的变量就行:

else:
    categoria = line
    line = f.readline().strip()
    posti = int(line)
    line = f.readline().strip()
    modello = line
    line = f.readline().strip()
    marca = line
    # 换个变量名,比如furgone,避免覆盖文件对象
    furgone = Furgone(cod, tipo, targa, categoria, posti, modello, marca)
    line = f.readline().strip()
    Veicoli.append(furgone)

额外优化小建议

  1. 推荐用with语句管理文件,它会自动帮你关闭文件,避免忘记手动close或者异常时无法关闭的问题:
with open("veicoli.txt", "r") as f:
    # 这里写读取文件的逻辑,无需手动调用f.close()
  1. 当前逐行读取的逻辑有点繁琐,也容易出错,可以试试用迭代器遍历文件行,比如for line in f:,能减少重复调用readline带来的混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:10:51