You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:32:59