我在python中制作了一个游戏,它产生了大量我想要存储的高分,其中包括安全性,存储效率和易用性。目前我将它们存储在字典中,其中的键引用了不同的级别类型,然后将其写入config/blueprints
文件并使用/1.0
进行检索。
编辑:我现在知道这是一个坏主意,而是使用json。但是,该文件仍然清晰可辨,任何可以添加的加密都是有益的。
.txt
但是,我对这个方法有一些问题,我希望得到一些建议。
使用eval
和import os
#Reading from file
try:
with open(os.path.join(root_directory, 'highscores.txt'), 'r') as f:
highscores = eval(f.read())
except IOError:
highscores = dict()
#Writing to file
with open(os.path.join(root_directory, 'highscores.txt'), 'w') as f:
f.write(highscores)
方法制作Highscore
课程是否值得,是否可以/应该添加其他安全性?
答案 0 :(得分:1)
JSON将是一种很好的格式来存储你的分数。如果你担心文件大小,你可以gzip JSON文件,虽然这可能会对性能产生影响。
如果您的用户有权访问源代码,我怀疑是否有一种很好的方法来加密文件,仔细检查代码就无法撤消。如果它被“编译”成一种不太友好的格式,那么你可以做一些加密,虽然密钥会在某处。
JSON和gzip似乎是标准python安装的一部分,而有一些看似很受欢迎的加密库,如Simple-Crypt和Crypto,需要安装。
但是,如果您可能有多个进程可能更新此文件(例如同时播放多个播放器),则可能会遇到冲突,从而导致文件损坏。正如其他人在此提出的那样,某种数据库将是更好的解决方案。
答案 1 :(得分:1)
正如评论中所建议的那样,JSON似乎是您项目的理想存储方法。以下是您的代码的修改版本,已修改为读取和读取将JSON写入highscores.txt
文件。
import os
import json
#Reading from file
try:
with open(os.path.join(root_directory, 'highscores.txt'), 'r') as f:
highscores = json.load(f)
except IOError:
highscores = dict()
#Writing to file
with open(os.path.join(root_directory, 'highscores.txt'), 'w') as f:
json.dump(highscores, f)
关于安全性,要写入文本文件,您可能希望将高分数编码为JSON;加密JSON的数据;将加密的JSON数据写入文本文件。然后阅读这些数据,简单地按照我们的顺序颠倒我们刚才所做的事情。如果你四处搜索,你会遇到Python提供的多个有用的加密库。祝你好运!