博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之初识模块之序列化模块
阅读量:6306 次
发布时间:2019-06-22

本文共 2182 字,大约阅读时间需要 7 分钟。

什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化

序列化的目的

1、以某种存储形式使自定义 ;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性。

json 是一种通用的序列化格式,只有很少的数据类型可以通过json转化为字符串

import jsondic = {
'k1':'q1','k2':'q2','k3':'q3'}str_dic = json.dumps(dic) # 序列化,将一个字典转换成一个字符串print(type(str_dic),str_dic) # 注意,json转换完的字符串类型的字典中的字符串是由""表示的dic1 = json.loads(str_dic) # 反序列化,将字符串转回字典print(type(dic1),dic1) # 注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示list1 = [1,2,3,4,{
'k1':'q1','k2':'q2','k3':'q3'}]str_list1 = json.dumps(list1) # 注意,可以处理嵌套的数据类型print(type(str_list1),str_list1)list1_1 = json.loads(str_list1)print(type(list1_1),list1_1)
import jsondic = {
'k1':'q1','k2':'q2','k3':'q3'}with open('qqq','w',encoding='utf-8') as f: # dump方法接受一个文件句柄(f),将内容转换成json字符串写进文件 json.dump(dic,f)with open('qqq','r',encoding='utf-8') as f: # load方法接受一个文件句柄(f),将文件中json字符串的内容转换成数据结构返回 dic_1 = json.load(f) print(dic_1)
Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),       设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key ensure_ascii:,当它为True的时候,所有非ASCII码字符显示为\uXXXX序列,只需在dump时将ensure_ascii设置为False即可,       此时存入json的中文即可正常显示。) indent:应该是一个非负的整型,如果是0就是顶格分行显示,如果为空就是一行最紧凑显示,若为其它数值,则是每行缩进的字符数separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(‘,’,’:’);       这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。 sort_keys:将数据根据keys的值进行排序
import jsondata = {
'username':['哈哈','收到'],'sex':'male','age':26}json_dic2 = json.dumps(data,sort_keys=True,indent=2,separators=(',',':'),ensure_ascii=False)print(json_dic2)

pickle  python中所有的数据类型都可转化成字符串,但反序列化内容只能使用python读取

     且反序列化依赖代码

import pickledic = {
'q1':'w1','q2':'w2','q3':'w3'}str_dic = pickle.dumps(dic)print(str_dic) #一串二进制内容dic2 = pickle.loads(str_dic)print(dic2) #字典import timestruct_time = time.localtime(1000000000)print(struct_time)f = open('pickle_file','wb')pickle.dump(struct_time,f)f.close()f = open('pickle_file','rb')struct_time2 = pickle.load(f)f.close()print(struct_time2.tm_year)

shelve 只有一个方法,open(),拿到一个文件句柄,操作与字典类似

import shelvef = shelve.open('aaa')f['s']={1:'a',2:'b'}f.close()f1 = shelve.open('aaa')s = f1['s']  # 直接调用key,若不存在会报f1.close()print(s,s2)

 

转载于:https://www.cnblogs.com/xfdhh/p/10870906.html

你可能感兴趣的文章
iframe 在ie下面总是弹出新窗口解决方法
查看>>
分享10款漂亮实用的CSS3按钮
查看>>
安装nginx 常见错误及 解决方法
查看>>
Gorun8电子商城
查看>>
在之前链表的基础上改良的链表
查看>>
android编译系统makefile(Android.mk)写法
查看>>
MD5源代码C++
查看>>
Eclipse 添加 Ibator
查看>>
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
查看>>
Python编程语言
查看>>
十四、转到 linux
查看>>
Got error 241 'Invalid schema
查看>>
ReferenceError: event is not defined
查看>>
男人要内在美,更要外在美
查看>>
为什么要跟别人比?
查看>>
app启动白屏
查看>>
Oracle 提高查询性能(基础)
查看>>
学习知识应该像织网一样去学习——“网状学习法”
查看>>
Hadoop集群完全分布式安装
查看>>
QString,char,string之间赋值
查看>>