带有TypeError的迭代错误:“ _ io.TextIOWrapper”对象不可调用

时间:2019-02-26 16:35:04

标签: python syntax iteration

问题: 我发现代码的语法有问题,尤其是我用于遍历外部文件的for循环。

我的程序是一个骰子游戏,应该注册用户,然后允许他们随后登录游戏。最后,它必须访问外部文件,该文件以前曾用于存储获胜者的姓名(请记住授权名称具有单独的文件),并循环遍历该文件,并将前5位获胜者的姓名和分数输出到Shell < / em>

我使用了for循环遍历文件并将其附加到名为“ 前5个优胜者”的数组中,但是我似乎在代码的语法方面苦苦挣扎,因为我相当新的Python。

访问文件的代码。

with open("Top 5 Winners.txt","r") as db:
    top5Winners=[]

    for i in db(0,len([db])):

        top5Winners.append(line)

    top5Winners.sort()
    top5Winners.reverse() 
    for i in range(5):
        print(top5Winners[i])

错误代码:

for i in db(0,len([db])):

代码的len()部分是问题

注意: 我也不会介意任何技巧来提高我的代码效率,以便我可以在以后的项目中应用它。

1 个答案:

答案 0 :(得分:0)

您的缩进不是应该的。您确实打开了一个文件并使它可读,但是此后您什么也不做。请参见以下示例:

with open(file, 'r') as db:
    #code with file (db)
#rest of the code

因此您可以像这样将您的代码与之结合:

top5winners = []                                  #Make a list variable
with open("Top 5 Winners.txt","r") as db:         #Open your file
    for i in db:                                  #Loop trough contents of file
        top5winners.append(i)                     #Append iterable to list
top5winners.sort(reverse=True)                    #Sort list and use reverse option
for i in range(0, 5):                             #Loop trough range
    print(top5winners[i])                         #Print items from list

请注意,StackOverflow仅用于特定情况下的帮助,而不是要求他人编写代码的站点。

问候,来自CCD的Chris van den Hoorn。