python - TypeError 的迭代错误:'_io.TextIOWrapper' 对象不可调用
问题描述
问题: 我发现代码的语法存在问题,特别是我用来循环外部文件的 for 循环。
我的程序是一个骰子游戏,应该注册用户,然后允许他们登录游戏。最后,它必须访问之前用于存储获胜者姓名的外部文件(请记住,授权名称有一个单独的文件),并循环访问并将前 5 名获胜者姓名和分数输出到 shell
我使用 for 循环遍历文件并将其附加到名为“ Top 5 Winners ”的数组中,但是我似乎对代码的语法感到困惑,因为我是一个全新的 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() 部分是问题
注意:我也不介意关于如何使这段代码更高效的任何提示,以便我可以在以后的项目中应用它。
解决方案
你的缩进不是应该的。您确实打开了一个文件并使其可读,但之后您没有对它做任何事情。请参见以下示例:
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 旨在为特定案例提供帮助,而不是要求其他人编写一段代码的站点。
此致,克里斯·福尔。
推荐阅读
- serialization - Avro 的优缺点 - JSON / 二进制序列化
- go - 测试并发映射读取和映射写入
- reactjs - 道具类型失败:提供给“输入”的值“搜索”的道具“类型”无效
- angular7 - 如何从 ASP.NET Core 调用存储过程并在 Angular 7 中提供服务?需要逐步解决方案
- c - 多边形空间有错误指针超出其界限
- r - 在 ggplot 中渲染日文字体
- javascript - 根据选择值显示或隐藏值
- angular - Rxjs,一个参数的管道
- linux - 当我在Linux系统中使用webpack别名的“@”执行“npm run build”时
- flask - Kubernetes 和 Gunicorn 上的 Flask 应用程序扩展