【问题标题】:Storing last n values for x in txt file将 x 的最后 n 个值存储在 txt 文件中
【发布时间】:2015-07-18 22:52:23
【问题描述】:

如果我有一个程序询问用户的姓名和分数,打开一个 .txt 文件,在文件中搜索他们的姓名,例如:

for x in f.readlines():
    if name in x.strip():
        #etc

如果找到名称,则必须编辑该行并添加新分数,但它只能存储 x 个分数,例如最后 4 个分数。所以如果已经存储了4个分数,则必须删除最旧的一个,只保留最新的4个分数。

如果找不到名称,那么它只是一个简单的附加到文件末尾。

我将如何做到这一点?

【问题讨论】:

  • 文件长什么样?

标签: python file input


【解决方案1】:

我会读取文件并将其放入(解析)某种数据结构(例如字典)中,然后更新 dict 中的值,然后将其写回。这可能不是最有效的方式,但却是我最常用的方式。

【讨论】:

    【解决方案2】:

    首先,您需要弄清楚该行的格式。你将如何区分姓名和分数?我用的是逗号。

    for line in f: # readlines() is not necessary here
        if name in line:
            name, s = line.split(',', 1)
            scores = s.split(',')
            if len(scores) > 4:
                del scores[0] # remove the oldest one
            scores.append(the_new_score)
            new_line = "%s,%s" % (name, ','.join(scores))
    

    然后用 new_line 做点什么。

    (注意:这只是一个关于如何完成此操作的非常快速的想法。这不会就地更新文件,也不会在任何地方写出结果。这留给读者作为练习,除非您确实需要帮助也有那部分)

    【讨论】:

    • 非常优雅的解决方案。别担心,我可以写入文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2013-11-02
    • 2017-08-23
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多