【发布时间】:2015-08-12 23:15:14
【问题描述】:
我用python制作了一个游戏,它会生成大量我想要存储的高分,优先考虑安全性、存储效率和易用性。目前,我将它们存储在字典中,其中包含引用不同级别类型的键,然后将其写入.txt 文件并使用eval 检索。
编辑:我现在知道这是一个坏主意,而是使用 json。但是该文件仍然清晰易读,任何可以添加的加密都将是有益的。
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)
但是,我在使用这种方法时遇到了一些问题,希望得到一些建议。
- 我想减小文件大小。压缩文件确实有很大的不同,但任何更有效的格式都会更好。
- 我想让它更安全。理想情况下,我希望熟悉 python 的玩家很难弄清楚如何编辑高分。
- 我想让它更容易更新高分的主副本,并在分布式副本中添加新内容,特别是在字典中使用元组键相当笨拙。
是否值得创建一个使用serialize 和deserialize 方法的Highscore 类,是否可以/应该添加任何额外的安全性?
【问题讨论】:
-
结果文件大小是多少?
-
使用 JSON。不是
pickle,不是eval()在.txt 文件中的字典上; JSON :)。 -
我会在这里查看更多信息(虽然不是加密):stackoverflow.com/questions/28326725/…
-
这正是 postgres、redis、mongodb、mysql 等为...创建的东西。
-
@Siwel
json更安全(如果您使用simplejson,速度更快)...如果我将我的用户名设为os.system("format C:")并且您运行您可能不喜欢的eval结果
标签: python python-2.7 encryption serialization pickle