【问题标题】:Python - AttributeError: '_io.TextIOWrapper' object has no attribute 'append'Python - AttributeError: '_io.TextIOWrapper' 对象没有属性 'append'
【发布时间】:2015-08-16 02:55:11
【问题描述】:

我收到一个错误

ClassFile.append(filelines) AttributeError: '_io.TextIOWrapper' object has no attribute 'append'

尝试写入文件时。它是关于编写一个关于学生分数、他们的姓名、姓氏、班级名称的文件(只需输入班级Class 1)一个分数计数和他们的分数。只有他们的最后 3 个分数将保存在文件中。我不明白这是什么意思。

这里是代码

score=3
counter=0

name=input('Name:')
surname=input('Last Name:')
Class=input('Class Name:')

filelines=[]

Class=open(Class+'.txt','r')
line=Class.readline()
while line!='':
    Class.append(filelines)
    Class.close()

linecount=len(filelines)
for i in range(0,linecount):
    data=filelines[i].split(',')

【问题讨论】:

  • 这仅仅意味着一个文件对象没有一个叫做append()的方法
  • 我不完全是怎么回事,但是您正在以读取模式打开文件('r'),然后尝试写入文件('append')。也许你需要用'r+'打开它,这样你就可以读写了。此外,文件具有write/writelines 写入方法,而不是append。您正在使用python3,对吗?如果是这样,请标记您的问题,这会有所帮助:)

标签: python attributeerror


【解决方案1】:

你把你的附加代码搞混了; append() 方法在 filelines 对象上:

ClassFile=open(CN+'.txt','r')
line=ClassFile.readline()
while line!='':
    filelines.append(line)
ClassFile.close()

请注意,我还将循环中的close() 调用移出

您不需要在那里使用while 循环;如果你想要一个包含所有行的列表,你可以简单地做:

ClassFile=open(CN+'.txt','r')
filelines = list(ClassFile)
ClassFile.close()

要处理文件关闭,请将文件对象用作上下文管理器:

with open(CN + '.txt', 'r') as openfile:
    filelines = list(openfile)

【讨论】:

    【解决方案2】:

    ClassFile_io.TextIOWrapper 类型的对象,它没有任何属性 append。您误认为它是 List 类型的对象。它似乎代替 ClassFile.append(filelines) 你想要像filelines.append(line) 这样的东西。 如果您想将某些内容写入文件,请以写入或附加模式(取决于您的需要)打开它,然后将您想要的字符串写入其中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 2014-01-16
      • 1970-01-01
      • 2018-06-22
      • 2017-08-14
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多