1

我对编码和解码比较陌生,实际上我根本没有任何经验。

我想知道,如何将 Python 3 中的字典解码为不可读的格式,以防止有人在程序之外对其进行修改?
同样,我将如何从该文件中读取并将字典编码回来?

我的测试代码现在只写入和读取纯文本文件。

import ast

myDict = {}

#Writer
fileModifier = open('file.txt', 'w')
fileModifier.write(str(myDict)))
fileModifier.close()

#Reader
fileModifier = open('file.txt', 'r')
myDict = ast.literal_eval(fileModifier.read())
fileModifier.close()
4

3 回答 3

2

根据您的字典所包含的内容,您可以使用jsonpickle 之类的编码库(对于存储我复杂的 python 数据结构很有用)。

这是一个使用 json 的示例,要使用 pickle 只需将所有实例替换为jsonwithpickle就可以了。

import json

myDict = {}

#Writer
fileModifier = open('file.txt', 'w'):
json.dump(myDict, fileModifier)
fileModifier.close()

#Reader
fileModifier = open('file.txt', 'r'):
myDict = json.load(fileModifier)
fileModifier.close()
于 2013-05-29T18:36:14.293 回答
0

这里使用的典型东西是jsonorpickle模块(都在标准库中)。该过程称为“序列化”。 pickle可以序列化几乎任意的 Python 对象,而json只能序列化基本类型/对象(整数、浮点数、字符串、列表、字典)。 json在一天结束时是人类可读的,而pickle文件不是。

于 2013-05-29T18:35:26.790 回答
0

编码/解码的另一种方法是简单地将文件用作dict,而 python 具有shelve完全执行此操作的模块。该模块使用文件作为数据库,并为其提供类似dict的接口。

它有一些限制,例如键必须是字符串,而且它显然比普通的慢,dict因为它执行 I/O 操作。

于 2013-05-29T18:41:50.680 回答