3 回答
TA贡献1878条经验 获得超4个赞
附加到文件
out_file不是一个列表。您必须使用该write()方法写入文件。还print(out_file)打印对象表示,而不是文件的内容。
只需替换out_file.append()为out_file.write():
score = '11'
gametag = 'Griminal'
with open("scores.txt", "a") as out_file:
out_string = str(score) + " points from: " + str(gametag) + "\n"
print(out_string)
out_file.write(out_string)
对文件进行排序
据我所知,没有简单的方法可以对文件进行适当的排序。也许其他人可以为您提供更好的方法,但我会读取列表中的整个文件(文件的每一行作为列表的一个元素),对其进行排序,然后再次将其保存在文件中。这当然,如果您需要对文件本身进行排序。如果您的排序仅用于打印目的(即您不关心文件本身是否已排序),那么只需将新分数保存在文件中,然后读取它并让脚本在打印前对输出进行排序。
这是读取和打印排序结果的方法:
with open("scores.txt", "r") as scores:
lines = scores.readlines() #reads all the lines
sortedlines = sorted(lines, key=lambda x: int(x.split()[0]), reverse=True) #be sure of the index on which to sort!
for i in sortedlines[:5]: #the first 5 only
print(i)
x.split()将每一行拆分为一个单词列表,使用空格作为分隔符。这里我使用索引 0,因为在前一个输入之后out_string = str(score) + " points from: " + str(gametag) + "\n",分数位于列表的第一个元素中。
如果您需要再次保存文件,您可以sortedlines在其中写入 覆盖它。
with open("scores.txt", "w") as out_file: #mode "w" deletes any previous content
for i in sortedlines:
out_file.write(i)
添加回答
举报