如何对python3中的字典进行外部文件的编码/解码?

2024-10-01 09:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编码和解码还比较陌生,事实上我一点经验都没有。在

我在想,如何将python3中的字典解码为不可读的格式,以防止有人在程序外修改它?
同样,我如何从那个文件中读取并重新编码字典呢?在

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

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

Tags: 程序txt编码close字典格式经验open
3条回答

编码/解码的另一种方法是简单地将文件用作dict,而python有一个^{}模块,正是这样做的。这个模块使用一个文件作为数据库,并为其提供一个dict样的接口。在

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

根据您的字典所保存的内容,您可以使用json或{a2}(用于存储复杂的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()

这里典型的用法是^{}或{a2}模块(两者都在标准库中)。这个过程称为“序列化”。pickle可以序列化几乎任意python对象,而{}只能序列化基本类型/对象(整数、浮点、字符串、列表、字典)。json在一天结束时是人类可读的,而{}文件则不是

相关问题 更多 >