首页 > 编程语言 > 详细

python——序列化

时间:2019-08-19 16:37:36      阅读:102      评论:0      收藏:0      [点我收藏+]
# 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))
#若选取建的没有可以加上

 

python——序列化

原文:https://www.cnblogs.com/zzzi/p/11377354.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!