从.txt文件中删除行时出错

时间:2014-12-13 18:37:42

标签: python

猜测谁在学校玩游戏,无法找到从.txt fie中删除一行的方法。我一直收到以下错误:

<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'>
<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'>
<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'>

以下是代码:

information = open("characters.txt","r")

hair = input("Does your character have black hair?") #Asks for input under variable name hair
if hair == "yes":
    for line in lines: #Breaks it down into individual lines
        if line.split(',')[1] == "Black hair":          
           lines.remove(line) 
        print(information)

2 个答案:

答案 0 :(得分:1)

这不是错误。它是打开文件对象的字符串表示形式:

>>> open('a.txt')
<_io.TextIOWrapper name='a.txt' mode='r' encoding='cp1252'>
>>>

如果要打印此文件的内容,则需要调用其read方法:

print(information.read())

read方法将所有文件的内容读入字符串。但是,如果您只需要一行,请使用readline方法。

答案 1 :(得分:1)

您可能不想打印information但是您想要打印的内容并不完全清楚。

features = dict()
with open("characters.txt","r") as information:
    for line in information:
        _, haircolor = line.split(',')
        features[haircolor] = line

hair = input("Does your character have black hair?")
if hair == "yes":
    for entry in features['Black hair']:
        print 'Character could be {}'.format(entry)

也许在这一点上,您可能想要提出另一个问题,以便根据其他一些显着特征减少剩余的条目。您可能应该将主循环设计为要询问的功能的循环,而不是创建一个长的,重复的程序,一次要求一个功能。如果您只剩下一个条目,则可以停止循环(或者如果您最终输入的条目为零,则无法猜测)。

对于它的价值,你的特征表示似乎不是最佳的,但由于你没有描述它,这只是一个快速的印象。 (如果你至少简单地描述了程序的相关部分,你可以得到更好的答案。)