如何逐行打印.txt文件?游戏计分板打印返回[]问题求助
问题分析与解决
代码中的错误点
- 变量名不匹配:代码中打开文件时赋值给
scores,但后续用score调用方法,这会触发NameError(除非是你笔误)。 - 文件指针位置问题:
readlines()会一次性读取文件所有内容,并将文件指针移动到文件末尾。后续再调用readlines()时,指针已经在末尾,只能返回空列表[]。 readlines()参数误用:readlines(hint)的参数是字节数提示,不是要读取的行数,你想用它读取前i+1行的写法是错误的。
修正后的代码
方式一:直接遍历文件对象(推荐,内存效率高)
直接遍历打开的文件对象,会自动逐行读取,无需手动处理指针:
with open("Scores.txt", "r") as scores: for line in scores: # strip() 移除每行末尾的换行符和首尾空格,按需选择是否使用 print(line.strip())
方式二:先读取所有行到列表再遍历
如果需要后续复用文件内容,可以先把所有行存入列表:
with open("Scores.txt", "r") as scores: lines = scores.readlines() for line in lines: print(line.strip())
为什么你的代码输出[]
假设你修正了变量名的问题,第一次调用score.readlines()已经读取了所有内容,文件指针移到末尾。循环中再次调用score.readlines(i+1)时,没有内容可读,所以返回空列表。即便文件只有一行,第一次readlines()读取后指针到末尾,后续调用也只能得到[]。
内容的提问来源于stack exchange,提问作者MrDDog
相关产品推荐
相关产品推荐

