如何在Python中自动对单行存数的文本文件进行降序数值排序?
嘿,给你个超简洁的解决方案,完全不用复杂的变量和多行读取代码!
首先,咱们可以把写入新分数和自动排序的逻辑整合在一起,用Python的列表推导式和文件上下文管理器(with语句)来实现,代码短还不容易出错:
完整代码示例
# 假设你已经拿到了User1和Total1的值,比如: User1 = "玩家昵称" Total1 = "88" # 如果是数字类型直接用,字符串的话后面会自动转 # 第一步:追加新的分数到文件(保证每行一个数字) with open("Winnersnum.txt", "a") as savefile: savefile.write(f"{Total1}\n") # 第二步:自动按降序排序并覆盖原文件 with open("Winnersnum.txt", "r+") as f: # 一行读取所有有效分数,转成整数(如果是小数就换成float) scores = [int(line.strip()) for line in f if line.strip()] # 降序排序 scores.sort(reverse=True) # 回到文件开头,清空原有内容 f.seek(0) f.truncate() # 写入排序后的分数,每行一个 for score in scores: f.write(f"{score}\n")
为什么这个方案简便?
- 用
with语句自动处理文件的打开/关闭,不用手动调用close(),避免资源泄漏 - 列表推导式一行完成读取行→去除空白→转成数值→过滤空行的操作,比循环写好几行清爽多了
r+模式支持同时读写,配合seek(0)和truncate()可以直接覆盖原文件,不用额外创建临时文件
如果你的分数可能包含小数,只需要把代码里的int换成float就行,完全兼容。
内容的提问来源于stack exchange,提问作者D3monalex
相关产品推荐
相关产品推荐

