要将字典或列表保存到文件的时候,我们需要现将数据类型转换成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)