json&pickle模块shelve模块

  • json

在不同的编程语言之间传递对象

 1 dic = {‘name‘: ‘alvin‘, ‘age‘: 23, ‘sex‘: ‘male‘}
 2 print(type(dic))  # <class ‘dict‘>
 3
 4 j = json.dumps(dic)
 5 print(type(j))  # <class ‘str‘>
 6
 7 f = open(‘序列化对象‘, ‘w‘)
 8 f.write(j)  # -------------------等价于json.dump(dic,f)
 9 f.close()
10 # -----------------------------反序列化<br>
11 import json
12
13 f = open(‘序列化对象‘)
14 data = json.loads(f.read())  # 等价于data=json.load(f)
15
16 import json
17 #dct="{‘1‘:111}"#json 不认单引号
18 #dct=str({"1":111})#报错,因为生成的数据还是单引号:{‘one‘: 1}
19
20 dct=‘{"1":"111"}‘
21 print(json.loads(dct))
22
23 #conclusion:
24 #        无论数据是怎样创建的,只要满足json格式,就可以json.loads出来,不一定非要dumps的数据才能loads
  • pickle

pickle是python自己的序列化,想序列化什么就序列化什么,不像json有限制。

import pickle

dic = {‘name‘: ‘alvin‘, ‘age‘: 23, ‘sex‘: ‘male‘}

print(type(dic))  # <class ‘dict‘>

j = pickle.dumps(dic)
print(type(j))  # <class ‘bytes‘>

f = open(‘序列化对象_pickle‘, ‘wb‘)  # 注意是w是写入str,wb是写入bytes,j是‘bytes‘
f.write(j)  # -------------------等价于pickle.dump(dic,f)

f.close()
# -------------------------反序列化
import pickle

f = open(‘序列化对象_pickle‘, ‘rb‘)

data = pickle.loads(f.read())  # 等价于data=pickle.load(f)

print(data[‘age‘])
  • shelve模块

shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型

import shelve

f=shelve.open(r‘sheve.txt‘)
# f[‘stu1_info‘]={‘name‘:‘egon‘,‘age‘:18,‘hobby‘:[‘piao‘,‘smoking‘,‘drinking‘]}
# f[‘stu2_info‘]={‘name‘:‘gangdan‘,‘age‘:53}
# f[‘school_info‘]={‘website‘:‘http://www.pypy.org‘,‘city‘:‘beijing‘}

print(f[‘stu1_info‘][‘hobby‘])
f.close()

  

时间: 2024-08-27 14:01:50

json&pickle模块shelve模块的相关文章

python课堂整理26 ---json、pickle、shelve模块(序列化处理)

一.序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,python中叫pickling 序列化之后就可以把序列化后的内容写入磁盘或通过网络传输到别的机器上 反序列化:unpickling,也就是loads的过程 二.json模块 功能:处理成字符串 可以让不同语言间进行数据交换 import json dic = {"name": "alex"} data = json.dumps(dic) print(data, type(data)) 经js

Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块

5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 5.1 使用sys.argv进行登录判断,跳过 i/o阻塞 #使用sys.argv进行登录判断,跳过 i/o阻塞 import s

python 常用模块 time random os模块 sys模块 json &amp; pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

json&amp;pickle&amp;shelve模块

之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思

常用模块(json/pickle/shelve/XML)

一.json模块(重点) 一种跨平台的数据格式 也属于序列化的一种方式 介绍模块之前,三个问题: 序列化是什么? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 反序列化又是什么? 将硬盘上存储的中间格式数据在还原为内存中的数据结构 为什么要序列化? 1.持久保持状态 2.跨平台数据的交互 JSON是什么? java script object notation 就是对象表示法 var obj = {"name":"egon"} 对于我们开发而言 j

python序列化:json,pickle,shelve

什么是序列化 什么是序列化,把程序中的对象或者变量,从内存中转换为可存储或可传输的过程称为序列化.在 Python 中,这个过程称为 pickling,在其他语言中也被称为 serialization,marshalling,flattening 等.程序中的对象(或者变量)在序列化之后,就可以直接存放到存储设备上,或者直接发送到网络上进行传输. 序列化的逆向过程,即为反序列化(unpickling),就是把序列化的对象(或者变量)重新读到内存中~ json模块 json 模块就用于序列化和反序

python 之 random 模块、 shutil 模块、shelve模块、 xml模块

6.12 random 模块 print(random.random()) (0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) [1,3] 大于等于1且小于等于3之间的整数 print(random.randrange(1,3)) [1,3) 大于等于1且小于3之间的整数 print(random.choice ( [1,'23', [4,5] ] ) )   1或者23或者[4,5] print(random.sample( [1,'2

Python学习第十三天 time datetime random os sysshutil json pickle shelve xml configparser hashlib suprocess logging re

https://www.cnblogs.com/yuanchenqi/articles/5732581.html https://www.cnblogs.com/linhaifeng/articles/6384466.html#_label2 一 time与datetime模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time())”,返回的是fl

day⑥:shelve模块

shelve 模块 shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 说白了,就是pickle的高级吧 例子: 一.pickle 处理python的数据格式 ①pickle_dump.py #!/usr/bin/env python #coding=utf-8 #这个例子是pickle dump对比shelve之持久化 import pickle class Test(object): def __init__(self,n