以下是使用文件的部分:
file = open('Dice Game.txt', 'a')
file.write(winner + '\n')
file.close()
file = open('Dice Game.txt', 'r')
for line in file:
name = line.strip()
print(name)
file.close()
我知道打印分数的部分很大,但这似乎是我可以正确打印分数的唯一方法。
我尝试了很多在网上找到的不同解决方案,但是没有一个对文件进行降序数字排序(并打印出前5分),它们似乎都给出了错误(尝试使用东西时)例如sort
和sorted
)。
变量赢家,如果定义为:
winner = str(score) + '=' + str(username)
我想弄清楚应该如何更改该变量或如何对其进行排序。
答案 0 :(得分:0)
让我们存储文件中的内容。
lines = []
for line in file:
winner = line.strip() # something like '30=Jim'
score, name = winner.split('=') # => '30', 'Jim'
# now store that information for later
lines.append((int(score), name)) # we're putting (30, 'Jim') in lines
# lines contains [(30, 'Jim'), (20, 'Amy'), (60, 'Susan'), ...]
print(lines)
您现在可以使用在网上找到的一种方法对lines
进行排序吗?
答案 1 :(得分:0)
只需添加一个条目,就无需两次打开文件,因为可以在r+
模式下打开。这将使您能够读写。 r
模式将文件指针放在文件的开头而不是结尾。打开文件时,即使发生错误,也应使用with
语句自动关闭文件:
with open('Dice Game.txt', 'r+') as file:
data = [line.strip() for line in file]
print(winner, file=file)
data.append(winner)
分配给data
的理解会将文件指针移到末尾。然后print
语句写到末尾。
对数据进行排序是完全独立的蠕虫病毒。您必须拆分数据并按分数的数值排序。然后,您将不得不重写整个文件。虽然您可以一次打开即可完成此操作,但与原始示例中一样,打开两次可能会更容易:
fname = 'Dice Game.txt'
with open(fname, 'r') as file:
data = [int(score), name.rstrip() for score, name in (line.split('=', 1) for line in file)]
data.sort()
with open(fname, 'w') as file:
file.writelines(f'{score}={name}\n' for score, name in data)
答案 2 :(得分:-1)
file = open("something.txt", r)
contents = file.read()
##Now you may play with the file contents
each_line = contents.split("\n")
##Each line of your file content will be stored in a list
##Access each element as:
for items in each_line:
print(items)
##Do something
##Sorting
contents.sort()
##Now the contents of list are sorted
print(contents)