0

我有一个 python 游戏,它可以像这样写入用户数据:Bob 3在文本文件中。我正在尝试编写代码,因此如果玩家达到某个点,它将删除关卡编号(在示例中:)1并编写新关卡。我已经把这条线分开了:

name, level = line.split()

有什么可以做的吗?

4

1 回答 1

1

“更新”一个普通文件实际上意味着编写一个新文件,然后用新文件替换旧文件 - 你不能只进行“就地”更新。虽然在技术上可行且并不困难,但它可能不是满足您需求的最有效解决方案,因为您必须通过整个读取 + 解析旧文件 / 写入新文件 / 为每次更新重命名(并且可能必须处理根据您的应用程序也具有并发访问权限)。使用某种数据库(键/值、关系、文档等)可能是一个更好的解决方案,因为它会处理大部分的内务。

对于您的问题的一个非常天真的答案,它看起来像这样:

def update_level(username, new_level):
   inpath = "/path/to/your/file"
   outpath = "path/to/tmpfile"
   with open(inpath) as infile:
       with open(outpath, "w") as outfile:
           for line in infile:
               line = line.strip()
               name, level = line.split()
               if name == username:
                   line = " ".join((username, new_level))
               outfile.write("%s\n" % line)
   os.rename(outpath, inpath)
于 2013-11-12T11:40:13.023 回答