标签:破坏 http 函数 bsp 需要 最大 删除文件 字符串 类型
比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来。 但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中。 你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢? 没错序列化的过程就是从dic 变成str(dic)的过程。现在你可以通过str(dic),将一个名为dic的字典转换成一个字符串, 但是你要怎么把一个字符串转换成字典呢? 聪明的你肯定想到了eval(),如果我们将一个字符串类型的字典str_dic传给eval,就会得到一个返回的字典类型了。 eval()函数十分强大,但是eval是做什么的?e官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。 BUT!强大的函数有代价。安全性是其最大的缺点。 想象一下,如果我们从文件中读出的不是一个数据结构,而是一句"删除文件"类似的破坏性语句,那么后果实在不堪设设想。 而使用eval就要担这个风险。 所以,我们并不推荐用eval方法来进行反序列化操作(将str转换成python中的数据结构) 为什么要有序列化模块
1、以某种存储形式使自定义对象持久化;
Json模块提供了四个功能:dumps、dump、loads、load
importjsonf=open(‘json_file‘,‘w‘)dic={‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘}json.dump(dic,f)#dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件f.close()f=open(‘json_file‘)dic2=json.load(f)#load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回f.close()print(type(dic2),dic2)load和dump
ensure_ascii=False关键字使用
标签:破坏 http 函数 bsp 需要 最大 删除文件 字符串 类型
原文地址:https://www.cnblogs.com/selid/p/10219057.html