码迷,mamicode.com
首页 > 其他好文 > 详细

序列化模块

时间:2019-08-10 19:12:58      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:dump   出错   关闭   key   支持   round   往里面   打印   das   

一、定义

#序列化 —— 转向一个字符串数据类型
#序列 —— 字符串

#从数据类型 —— 字符串的过程  序列化
#从字符串 —— 数据类型  反序列化

二、相关模块

#json 通用的序列化格式,并且其他语言都用
    # 但只有很少一部分数据类型可以通过json转化成字符串
#pickle 所有的python中的数据类型都可以转化成字符串形式
    #序列化的内容只有python能理解
    #且部分反序列化依赖代码
#shelve 有序列化句柄,使用句柄直接操作,很方便。

三、json

#json    dumps序列化   loads反序列化   内存中操作
import json
dic={k:v}
print(type(dic))
str_d=json.dumps(dic)   #序列化
print(type(str_d),str_d)
# <class ‘dict‘>
# <class ‘str‘> {"k": "v"}
#本身单引号,但是内部用到所有的字符串元素要用双引号才能识别
dic_d=json.loads(str_d)
print(type(dic_d),dic_d)
# <class ‘dict‘> {‘k‘: ‘v‘}

#数字,字符串,列表,字典,元组(转成列表再序列化)
#集合不可以转化集合

#json   dump   load  文件中操作  前一个参数是内容,第二个参数是文件
dic2={k2:v2}       #先序列化再转进去
f=open(fff,w,encoding=utf-8)
json.dump(dic2,f)
f.close()
# f=open(‘fff‘)        #还没有读文字,不用写encoding
# res=json.load(f)
# f.close()            #可以关闭之后再打印,因为已经读出来了
# print(type(res),res)

# 上述如果内容有中文,可以使用json.dump(dic,f,ensure_ascii=False)
# 则写入文件的内容为中文,否则默认为bytes类型写入

# 不可以一次多步输入。
# 必须分次往里面写
# 可以json中写入时加\n,读时for一行一行读,然后每一行进行Loads

四、pickle

#pickle  提供上述loads,dumps,load,dump方法
# 并且可以多步读入
#可以序列化集合,但是dumps之后是bites类型,loads之后是正常内容
#dump之前,打开文件用wb,load之前,打开文件用rb

五、shelve

# shelve打开文件,只提供open方法
# 文件句柄,可以直接把数据类型直接写到文件中去
# 但每次打开就会创建三个文件,但是看不懂(bak,dat,dir)
# 不支持多个应用同一时间往DB中写
# 一个问题:参数写flag=‘r‘,只读,但是仍然可以修改
# writebalck=True,参数用处,可以感知修改,减少出错概率,但是会增加额外的内存消耗和等待时间
import shelve
f=shelve.open(shelve_file_test)
f[key]={int:5,string:hello}
f.close()

f1=shelve.open(shelve_file_test,flag=r)
existing1=f1[key]
f1[key][int]=20
f.close()
print(existing1)

 

序列化模块

标签:dump   出错   关闭   key   支持   round   往里面   打印   das   

原文地址:https://www.cnblogs.com/lowislucifer/p/11332353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!