如今,以优化的方式在文件中跳转是管理大型文件的高性能应用程序的一项任务。在
您确定您的软件项目在运行时需要在文件中随机读取/写入位置吗?我认为你应该考虑改变整个方法:
如果数据很小,您可以在运行时以适当的容器格式(例如list或dict)在内存中保存/修改/生成数据,然后立即将其完全写入(更改时,或仅当程序退出时)。您可以考虑查看简单的数据库。此外,还有一些很好的数据交换格式,比如JSON,如果您的数据在运行时存储在字典中,这将是理想的格式。在
举个例子,让概念更清晰。假设您已经将数据写入gamedata.dat:[{"playtime": 25, "score": 13, "name": "rudolf"}, {"playtime": 300, "score": 1, "name": "peter"}]
这是utf-8编码和JSON格式的数据。在Python游戏运行时读取文件:
^{pr2}$
将数据转换为Python类型:gamedata = json.loads(s)
修改数据(添加新用户):user = {"name": "john", "score": 1337, "playtime": 1}
gamedata.append(user)
约翰真是个1337玩家。然而,在这一点上,你也可以删除一个用户,改变鲁道夫的分数或改变彼得的名字。。。在任何情况下,修改后,您只需将新数据写回磁盘即可:with open("gamedata.dat", "w") as f:
f.write(json.dumps(gamedata).encode("utf-8"))
关键是您可以在运行时在适当的容器类型中管理(创建/修改/删除)数据。当把数据写入磁盘时,为了保存游戏的当前状态,您需要写入整个数据集。在