什么叫序列化?

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

序列化模块--json模块--pickle模块-shelve模块的更多相关文章

  1. 【转】Python之数据序列化(json、pickle、shelve)

    [转]Python之数据序列化(json.pickle.shelve) 本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型 ...

  2. python常见模块之序列化(json与pickle以及shelve)

    什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flatte ...

  3. 20,序列化模块 json,pickle,shelve

    序列化模块 什么叫序列化? 将原本的字典,列表等内容转换成一个字符串的过程叫做序列化. 序列化的目的? 数据结构 通过序列化 转成 str. str 通过反序列化 转化成数据结构. json: jso ...

  4. Python—序列化和反序列化模块(json、pickle和shelve)

    什么是序列化 我们把对象(或者变量)从内存中变为可存储或者可传输的过程称为序列化.在python中为pickling,在其他语言中也被称之为serialization,marshalling,flat ...

  5. os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法

    一.os常用模块 显示当前工作目录 print(os.getcwd()) 返回上一层目录 os.chdir("..") 创建文件包 os.makedirs('python2/bin ...

  6. python模块-json、pickle、shelve

    json模块 用于文件处理时其他数据类型与js字符串之间转换.在将其他数据类型转换为js字符串时(dump方法),首先将前者内部所有的单引号变为双引号,再整体加上引号(单或双)转换为js字符串:再使用 ...

  7. 常用文件操作模块json,pickle、shelve和XML

    一.json 和 pickle模块 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Js ...

  8. python json、 pickle 、shelve 模块

    json 模块 用于序列化的模块 json,用于字符串 和 python数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load #!/usr/bin/env pyt ...

  9. 第九节:os、sys、json、pickle、shelve模块

    OS模块: os.getcwd()获取当前路径os.chdir()改变目录os.curdir返回当前目录os.pardir()父目录os.makedirs('a/b/c')创建多层目录os.remov ...

  10. (十四)json、pickle与shelve模块

    任何语言,都有自己的数据类型,那么不同的语言怎么找到一个通用的标准? 比如,后端用Python写的,前端是js,那么后端如果传一个dic字典给前端,前端肯定不认. 所以就有了序列化这个概念. 什么是序 ...

随机推荐

  1. 【精华】9张思维导图带你学习Javascript

    转自:ChokCoco(http://www.cnblogs.com/coco1s/p/3953653.html) 学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出8张javasc ...

  2. RING3到RING0

    当我在说跳转时,说的什么? CPU有很多指令,不是所有的指令都能够随时用,比如 ltr指令就不是随便什么时候能用,在保护模式下,如果你不安规则来执行指令,CPU就会抛出异常,比如你在INTEL手册上就 ...

  3. 构建第一个spring boot2.0应用之项目启动运行的几种方式(二)

    方法一. 配置Run/Debug Configuration  选择Main Class为项目 Application启动类(入口main方法) (2).进行项目目录,即包含pom.xml的目录下,启 ...

  4. 跨平台移动开发phonegap/cordova 3.3全系列教程-app启动画面

    1.app启动画面设计 用photoshop设计启动画面,图片分辨率为720*1280 保存的文件名为splash.png 将splash.png复制到res\drawable,如图 PS:要先添加闪 ...

  5. Java Annotation使用详解

    Java  Annotation是JDK5.0引入的一种注释机制.它与注释有一定区别,可以理解为代码上的特殊标记,通过这些标记我们可以在编译,类加载,运行等程序类的生命周期内被读取.执行相应的处理.通 ...

  6. TFS无法确定工作区解决方案

    当TFS遇到无法确定工作区时,删除掉SUO和VSSSCC文件,当然也有可能不是这两个,反正是SLN文件以外的两个文件,毕竟是昨天做的事,有点忘记了.所以,做掉文件之前,要做好备份O(∩_∩)O~

  7. c++ STL stack容器成员函数

    这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. vo ...

  8. 将腾讯视频客户端缓冲的文件转换为一个MP4格式文件

    打开腾讯视频windows客户端,播放要下载的视频,逐步快进使其缓冲完毕: 按照下图所示,复制缓存路径: 在cmd.exe的界面中输入“cd C:\854456b6d5a187ff3c0f553918 ...

  9. 基于PowerShell的Lync Server管理 使用C# 之 Telephony 功能 查看 /修改

    本以为这个属性可以在用户信息中直接反应出来,但是看了好几遍还是没找到这个属性名称 这个功能没有在get-User 的结果中直接反映出来 但是可以通过 Property 查找单个选项 如: Get-Cs ...

  10. ARM实验1 —— 流水灯实验

    实验内容: 编写GPIO模块程序,实现对FS_4412平台的上的led2,led3,led4 ,led5,的流水灯实现. 实验目的: 熟悉开发环境的使用. 掌握Exynos 4412处理器GPIO功能 ...