繁体   English   中英

如何在Python 3中对外部字典进行编码/解码?

[英]How do I encode/decode a dictionary in Python 3 to/from an external file?

我对编码和解码还比较陌生,实际上我完全没有经验。

我想知道,如何将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()

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

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

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()

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

编码/解码的一种替代方法是简单地使用文件作为dict ,而python有shelve模块来执行此操作。 该模块使用文件作为数据库,并为其提供类似dict的界面。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM