JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

# json序列化
import json,time
user={'name':'egon','age':18,'nb':True}
with open('user.json','w',encoding='utf-8') as f:
f.write(json.dumps(user)) # dumps students=['alex','egon','wxx','yxx']
json.dump(students,open('students.json','w',encoding='utf-8')) # dump dic1 = {'type':'dic1','username':'loleina','age':}
json.dumps(dic1,sort_keys=True,indent =4,separators=(',', ': '),encoding="gbk",ensure_ascii=True ) # dump
# 实际上就是对函数的参数的一个理解过程,下面列出几个常用的参数:
sort_keys:将数据根据keys的值进行排序。
indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json
separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(',',':');这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。
encoding:默认是UTF-8,设置json数据的编码方式。
ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示
Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成
True,则会跳过这类key

# pickle序列化
import pickle
s={1,2,3}
with open('s.pkl','wb') as f:
f.write(pickle.dumps(s)) # dumps pickle.dump(s,open('s.pkl','wb')) # dump #json反序列化
import json
with open('user.json','r',encoding='utf-8') as f:
user=json.loads(f.read()) #json.loads
print(user['name'])
user=json.load(open('user.json','r',encoding='utf-8')) #json.load
print(user['age']) #pickle反序列化
import pickle
with open('s.pkl','rb') as f:
s=pickle.loads(f.read()) #loads
print(s,type(s))
s=pickle.load(open('s.pkl','rb')) #load
print(s, type(s))

shelve 模块

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

import shelve

f=shelve.open('db.shl')
# f['stu1']={'name':'alex1','age':38}
# f['stu2']={'name':'alex2','age':28}
print(f['stu1']['name'])
f.close()

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

  1. python序列化: json & pickle & shelve 模块

    一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...

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

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  3. day6_python序列化之 json & pickle & shelve 模块

    一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...

  4. Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解

    把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json d ...

  5. json,pickle,shelve模块,xml处理模块

    常用模块学习—序列化模块详解 什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化? 你打游戏过程 ...

  6. json&pickle&shelve模块

    之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了 ...

  7. Python json & pickle & shelve模块

    json & pickle 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇 ...

  8. Python序列化,json&pickle&shelve模块

    1. 序列化说明 序列化可将非字符串的数据类型的数据进行存档,如字典.列表甚至是函数等等 反序列化,将通过序列化保存的文件内容反序列化即可得到数据原本的样子,可直接使用 2. Python中常用的序列 ...

  9. Python json & pickle, shelve 模块

    json 用于字符串和python的数据类型间的转换 四个功能 dumps dump loads load pickle 用于python特有的类型和python的数据类型进行转换 四个功能 dump ...

随机推荐

  1. Python内置函数之eval()

    eval(expression,globals=None,locals=None) 返回表达式的值.第一个参数必须是字符串.第二个参数可选,如果有必须是字典:第三个参数可选,如果有必须是映射对象(比如 ...

  2. vue 深入响应式原理

    vue最显著的特性就是不太引人注意的响应式系统(reactivity system),模型层(model)只是普通的javascript对象,修改它则更新视图view.这会让状态管理变得非常简单且直观 ...

  3. c#序列化和反序列化list

    List<UserData> lstStuModel = new List<UserData>() { new UserData(){Name="001", ...

  4. SVN常见问题(转)

    svn常见问题,报错,命令及我的总结 (2013-07-19 18:07:27) 转载▼     我自己犯过的一个错误是:/svn/MyERP_core_Main/!svn/act/b8bd621b- ...

  5. Perl/C#连接Oracle/SQL Server和简单操作

    连接数据库是一个很常见也很必须的操作.先将我用到的总结一下. 1. Perl 连接数据库 Perl 连接数据库的思路都是: 1)使用DBI模块: 2)创建数据库连接句柄dbh: 3)利用dbh创建语句 ...

  6. innodb_flush_log_at_trx_commit和sync_binlog参数详解

    innodb_flush_log_at_trx_commit和sync_binlog参数详解         标签:                             innodb_flush_ ...

  7. shell实现倒计时功能

    #!/bin/bash ############################################################## # File Name: oldboyedu.sh ...

  8. Mybatis在IDEA中使用generator逆向工程生成pojo,mapper

    使用mybatis可以逆向生成pojo和mapper文件有很多种方式,我以前用的是mybtais自带的generator包来生成,连接如下:mybatis自己生成pojo 今天我用了IDEA上使用ma ...

  9. nc 查看端口是否 联通

    nc 47.9.16.1 3306 如果卡住,说明 该IP的这个端口 访问不通, 防火墙拦截了

  10. PYTHON -转载,获取淘宝数据01

    import requests import sys import random api = { 'number':[ 'https://acs.m.taobao.com/h5/mtop.taobao ...