什么叫序列化?

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

    复数的概念在很久以前,数学家们被下面的等式困扰.x2=-1这是因为任何实数(无论正负)乘以自己总会得到一个非负数.一个数怎么可以乘以自己得到一负数?没有这样的实数存在.就这样18世纪,数学家们发了一个 ...

  2. Java项目—嗖嗖移动业务大厅

    嗖嗖移动业务大厅包类(如下图): SosoMgr: package cn.biz; import java.util.Scanner; import cn.common.Common; import ...

  3. subline 安装 package control 连接服务器失败,解决办法

    解决办法: 打开C:\Windows\system32\drivers\etc\hosts文件 增加 50.116.34.243 sublime.wbond.net50.116.34.243 pack ...

  4. java8 api简介(一)

    from https://www.aliyun.com/jiaocheng/785076.html 摘要:函数式编程详解:前言:现在有很多公司都用了jdk8,但是函数式编程也许没有用上,jdk8也提供 ...

  5. 前端三剑客之javascript

    前端三剑客之javascript 给个小目录  一.JavaScript介绍  二.ECMAScript(核心) 三.BOM对象(浏览器对象) 四.DOM对象(文档对象模型) 总结: JS的组成: a ...

  6. jquery中的置顶,置底,向上,向下的排序功能

    css .selectedLi{background: #f0ad4e;color:#fff;} html部分 <ul class="seetSelect2" id='sys ...

  7. 避免使用 JS 特性 with(obj){}

    1)简要说明         with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性.要给对象创建新的属性,必须明确地引用该对象. 2)语法格式  with(object ...

  8. python_52_函数返回值2

    def test1(x,y): print(x,y) test1(1,2)#位置参数调用,按顺序来,与形参一一对应 test1(y=1,x=2)#输出为2 1,不是1 2.关键字参数调用按关键字,不按 ...

  9. pymysql 简单操作数据库

    #!/usr/bin/env python #-*- coding:utf-8 -*- # author:leo # datetime:2019/4/24 15:22 # software: PyCh ...

  10. dn.net/blueheart20/article/details/22080489

    dn.net/blueheart20/article/details/22080489