首页 > 序列化模块--json模块--pickle模块-shelve模块

序列化模块--json模块--pickle模块-shelve模块

什么叫序列化?

序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传播到远程,因为硬盘或网络传输时只能接受bytes

例:
把内存数据 转成字符


# data ={

# 'roles':[

# {'role':'monster','type':'pip','life':50},

# {'role':'hero','type':'关羽','life':80}

# ]

# }

#

# f = open("game_status",'w')

# f.write(str(data))



例:把字符转成 内存数据


f=open("game_status",'r')

d =f.read()

d =eval(d) #eval能把字符串转化成各种数据类型

print(d['roles'])

'''把内存数据 转成字符,叫序列化

把字符转成 内存数据 叫反序列化'''



json 模块
# import json

# data ={

# 'roles':[

# {'role':'monster','type':'pip','life':50},

# {'role':'hero','type':'关羽','life':80}

# ]

# }

# d = json.dumps(data) #.dumps是将数据转成字符串

# print(d,type(d))

# f = open("test.json","w")

# json.dump(data,f) #dump直接转成字符串,并写入文件



# d = json.dumps(data) #将数据转成字符串

# d2 = json.loads(d) #加载字符串,并转成字典赋值给d2

# print(d2['roles']) #打印字典d2['roles']



# f = open("test.json","r") #打开文件test.json

# data =json.load(f) #加载字符串f并转成字典,赋值 data

# print(data['roles'],type(data))



'''只是把数据类型转成字符串存到内存里的意义?

json.dumps json.loads

1、把你的内存数据 通过网络 共享给远程其它人

2、字义了不同语言的之前的交互规则

1、纯文本,坏处,不能共享复杂的数据类型

2、xml,坏处,占空间大

3、json,简单,可读性好'''



import json

例:
# import json

# data ={

# 'roles':[

# {'role':'monster','type':'pip','life':50},

# {'role':'hero','type':'关羽','life':80}

# ]

# }

# d = json.dumps(data) #.dumps是将数据转成字符串

# print(d,type(d))

# f = open("test.json","w")

# json.dump(data,f) #dump直接转成字符串,并写入文件



# d = json.dumps(data) #将数据转成字符串

# d2 = json.loads(d) #加载字符串,并转成字典赋值给d2

# print(d2['roles']) #打印字典d2['roles']



# f = open("test.json","r") #打开文件test.json

# data =json.load(f) #加载字符串f并转成字典,赋值 data

# print(data['roles'],type(data))



'''只是把数据类型转成字符串存到内存里的意义?

json.dumps json.loads

1、把你的内存数据 通过网络 共享给远程其它人

2、字义了不同语言的之前的交互规则

1、纯文本,坏处,不能共享复杂的数据类型

2、xml,坏处,占空间大

3、json,简单,可读性好'''



import json
# import json

# data ={

# 'roles':[

# {'role':'monster','type':'pip','life':50},

# {'role':'hero','type':'关羽','life':80}

# ]

# }

# d = json.dumps(data) #.dumps是将数据转成字符串

# print(d,type(d))

# f = open("test.json","w")

# json.dump(data,f) #dump直接转成字符串,并写入文件
# d = json.dumps(data)  #将数据转成字符串

# d2 = json.loads(d) #加载字符串,并转成字典赋值给d2

# print(d2['roles']) #打印字典d2['roles']



# f = open("test.json","r") #打开文件test.json

# data =json.load(f) #加载字符串f并转成字典,赋值 data

# print(data['roles'],type(data))



'''只是把数据类型转成字符串存到内存里的意义?

json.dumps json.loads

1、把你的内存数据 通过网络 共享给远程其它人

2、字义了不同语言的之前的交互规则

1、纯文本,坏处,不能共享复杂的数据类型

2、xml,坏处,占空间大

3、json,简单,可读性好'''



import json

# f =open("json_file",'w',encoding='utf-8')

#

# d={'name':'alex','age':22}

# l=[1,2,3,4,'rain']

# json.dump(d,f) #dump字典到文件

# json.dump(l,f) #dump列表到文件,dump时没问题,但lodad时会报错。因为dump了多次不同类型的数据



f =open("json_file",'r',encoding='utf-8')

print(json.load(f)) #载入dump多次的不同数据类型会报错。



Pickle模块

import pickle

# d ={'name':'alex','age':22}
#

# l =[1,2,3,4,'rain']

# pk = open("data.pkl",'wb') #bytes,写入文件模式必须必成wb

# pickle.dump(d,pk)



f= open("data.pkl","rb")

d =pickle.load(f)

print(d)



'''json支持的序列化类型

str,int,tuple,list,dict

pickle支持的序列化类型

支持python里的所有的数据类型

只能在python里使用'''



shelve模块

shelve支持所有的数据类型,只支持python,一般都用shelve模块,很少用pickle模块
import shelve

f = shelve.open('shelve_test') #打开一个文件



names = ['alex','rain','test']

info ={'name':'alex','age':22}



f['names'] =names #持久化列表

f['info_dic']=info



f.close()

转载于:https://www.cnblogs.com/anzhangjun/p/8447915.html

更多相关:

  • 本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:【公众号dotNet工控上位机:thinger_swj】基于Socket访问西门子PLC系列教程(一)在完成上述步骤后,接下来就是编写上位机软件与PLC之间进行通信。上位机UI界面设计如下图所示:从上图可以看出...

  • 我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧分成几个其他区域,以便我可以分别处理每个数据帧-例如根据价格对每个地区的信息进行排序,以了解每个地区的市场情况。我给出了以下数据的简化版本:Competitor Region ProductA Product...

  • 作为一名IT从业者,我来回答一下这个问题。首先,对于具有Java编程基础的人来说,学习Python的初期并不会遇到太大的障碍,但是要结合自己的发展规划来制定学习规划,尤其要重视学习方向的选择。Java与Python都是比较典型的全场景编程语言,相比于Java语言来说,当前Python语言在大数据、人工智能领域的应用更为广泛一些,而且大...

  • 这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变。举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知识这个问题暂且按下不表,那哪些具体的问题是我需要了解的呢,以下简单罗列:1、了解数据分析师这个岗位在各个地区的需求情况?2、数据分析师的薪...

  • 这一节将开始学习python的一个核心数据分析支持库---pandas,它是python数据分析实践与实战的必备高级工具。对于使用 Python 进行数据分析来说,pandas 几乎是无人不知,无人不晓的。今天,我们就来认识认识数据分析界鼎鼎大名的 pandas。目录一. pandas主要数据结构 SeriesDataFrame二...

  • 学习计划 MyPlan11 主题:Python描述统计、简单统计图形 时间:8.5-8.11周内完成 参考资料:新书《谁说菜鸟不会数据分析python篇》 各位星友们,在这个星球里每个人都要逼迫自己学习未知的领域或知识点,每天进步一点点,积累的时间久了 ,菜鸟也能起飞。 完成情况: 在pandas中,使用describe函数进行描述统...

  • 利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信。 首先,先了解下SocketServer模块中可供使用的类: BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这个类的实例;可以考虑使用TCPServer和UDPServer。 TCPServer/UDPS...

  • 题目:序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树。 示例:  你可以将以下二叉树:     1    /   2   3      /     4   5 序列化为 "[1,2,3,null,null,4,5]" 解题: /*** Definition for a binary tree no...

  • sd.js  import $global from "./global"; import $g from "./sg"; import $ from "jquery"; import {Message, Loading} from "element-ui";//引入饿了么相关组件 import {Base64} from "js-...

  •     原生sd.js----------------------------------------------------------------  const API_ROOT_URL = "http://www.api.com";const $d= {_postList_url: API_ROOT_URL + "/api...