python——序列化
# dic={''} # f=open('test','w') # f.write(dic) #这样是无法将字典写入的 #要将变量转为字符串 # dic={'1:2'} # dic=str(dic) # f=open('test','w') # f.write(dic) # f=open('test','r') # data=f.read() # print(data['1']) #TypeError: string indices must be integers #这样无法取出字典 #需要动用eval函数 # f=open('test','r') # data=f.read() # print(eval(data)) #序列化可以更简单的帮我们传字典 #json 掌握两种方法即可:loads与dumps #load与dump是简化的存在 #pickle与json使用方法大致相同 #1.json #存入 import json dic={'name':'lin','age':'20'} f=open('test','w') a=json.dumps(dic)#1 #将dic进行序列化 f.write(a)#2 # 1+2=json.dump(dic,f) f.close() #{"name": "lin", "age": "20"} #取出 import json f=open('test','r') a=f.read()#1 a=json.loads(a)#2 #1+2= a=a.load(f) #使用load进行读取 print(a['name']) f.close() #lin # def zzzi(): # print('1') # a=json.dumps(zzzi) #<function zzzi at 0x000001D2451A3950> is not JSON serializable #json无法对函数、类进行序列化 #但pickle可以 #2.pickle import pickle def zzzi(): print('1') a=pickle.dumps(zzzi) f=open('test1','wb') #需要改为二进制 所以用wb 不然默认ste类型无法写入 f.write(a) f.close() #结果是看不懂的的 而json为可视的: #�c__main__ # zzzi # q . import pickle f=open('test1','rb') #接收时也是rb a=f.read() a=pickle.loads(a) a() #3.shelve #shelve存储就是一种字典的模式 #存入 import shelve f=shelve.open('test2') f['zzzi']={'name':'lin','age':'20'} #结果为三个文件 #取出 import shelve f=shelve.open('test2') a=f.get('zzzi') print(a) #{'name': 'lin', 'age': '20'} #关于get a={'name':'lin','age':'20'} print(a['name']) a['name']='zzzi'#也可以起到修改的作用 print(a['name']) #=print(a,get('name')) print(a.get('weight','100')) #若选取建的没有可以加上