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