要将字典或列表保存到文件的时候,我们需要现将数据类型转换成str。然后才能写入文件。这个通过str()就可以解决

dic = {'name':'Bob',
        'job':'engineer',
        'gender':'male'}
lis = ['apple','boy','cat','dog','earth']
strdic = str(dic)
strlis = str(lis)
print(type(strdic),strdic)
print(type(strlis),strlis)

反之,需要将以字符串形式保存的字典或列表读取使用的时候,也有对应的函数eval()可以实现

strdic = "{'name': 'Bob', 'job': 'engineer', 'gender': 'male'}"
strlis = "['apple', 'boy', 'cat', 'dog', 'earth']"
dic = eval(strdic)
lis = eval(strlis)
print(type(dic),dic)
print(type(lis),lis)

这里eval能够判断出你的数据类型。

实现了数据和字符串的互相转换,就可以方便的将数据保存到文件,以及从文件读取数据了。

 

不要使用eval

eval功能非常强大,可以执行任意代码,这样会有非常大的安全隐患。

我们需要的只是做数据类型的转换,使用ast.literal_eval来替代: 

import ast
strdic = "{'name': 'Bob', 'job': 'engineer', 'gender': 'male'}"
d1 = ast.literal_eval(strdic)
print(type(d1), d1)