什么叫序列化?

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

    1.overlay overlay属于devServer的属性,配置案例如下: ? 1 2 3 4 5 6 devServer: {  overlay: {   errors: true,   war ...

  2. 报错:Program bash is not found in PATH

    (如果按照我的方法来的话是没有这个错误的,我之前用别的方法的时候有但是后来还是没解决,写出来放到这里做参考吧) 参考原文:http://blog.csdn.net/fuyongbing1986/art ...

  3. Kyligence Analytics Platform Enterprise

    平台: arm 类型: ARM 模板 软件包: kap 2.3 kyanalyzer 2.3 apache kylin basic software bi big data cube data war ...

  4. Java栈,PC寄存器,本地方法栈,堆,方法区(静态区)和运行常量池

    详情参考:https://my.oschina.net/wangsifangyuan/blog/711329 前言:当要判断一个变量存在什么空间上哪儿时,先分析它是哪一种(是实例变量还是局部变量),实 ...

  5. “ipconfig不是内部命令或外部命令”解决方法

    第一:用鼠标右键单击“计算机”,在弹出的下拉菜单中选择“属性”. 第二:在系统属性中选择“高级系统设置”.在系统属性对话框中找到其上方的“高级”选项卡,里面有一个“环境变量”按钮,点击进入 第三:在下 ...

  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getSer

    这其实就是 获得应用的根url,比如说你的应用的根路径是 http://localhost:8080,那么你列出的代码就是为basePath赋值为 http://localhost:8080.具体点: ...

  7. Web开发中,用到的4种会话跟踪技术

    会话跟踪:主要解决HTTP的无状态问题,即: 当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的.非连续的.当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话 ...

  8. Python02 变量

    变量 因为Python是弱变量类型编程语言,所以变量赋值不需要类型声明. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 变量 ...

  9. Oracle 表的连接方式

    1. 连接说明 ① Oracle一次只能连接两个表.不管查询中有多少个表,Oracle 在连接中一次仅能操作两张表. ② 当执行多个表的连接时,优化器从一个表开始,将它与另一个表连接:然后将中间结果与 ...

  10. 【搜索】【入门】洛谷P1036 选数

    题目描述 已知 n个整数x1​,x2​,…,xn​,以及1个整数k(k<n).从nn个整数中任选kk个整数相加,可分别得到一系列的和. 例如当n=4,k=3,4个整数分别为3,7,12,19时, ...