Python - AttributeError: '_io.TextIOWrapper' object has no attribute 'append'

六眼飞鱼酱① 提交于 2019-12-19 10:42:53

问题


I receive an error

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

while trying to write a file. It is about writing a file about pupil's scores, their name, lastname, classname (Just enter class as Class 1)a scorecount of how many scores and their scores. Only their last 3 scores are to be kept in the file. I don't understand what this means.

Here is the code

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(',')

回答1:


You got your append code all mixed up; the append() method is on the filelines object:

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

Note that I also moved the close() call out of the loop.

You don't need to use a while loop there; if you want a list with all the lines, you can simply do:

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

To handle file closing, use the file object as a context manager:

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



回答2:


ClassFile is an object of type _io.TextIOWrapper which does not has any attribute append. You are mistaking it to be an object of type List. It seems in place of ClassFile.append(filelines) you want something like filelines.append(line). If you want to write something into a file, open it in write or append mode (depending on your need) and write into it the string you want.



来源:https://stackoverflow.com/questions/30593981/python-attributeerror-io-textiowrapper-object-has-no-attribute-append

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!