json、pickle、shelve

#!/usr/bin/env python
# encoding: utf-8
"""
@version: python3.6

@file: json_pickle.py
@time: 2017/11/2 13:18
"""

'''用于序列化的两个模块

json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

json与pickle基本基本相同
'''
#jsom写入
import json
dic ={'name':'alex','age':'18'}
f = open('JSON_text','w')
data = json.dumps(dic)
f.write(data)
f.close


#json读出
import json
f = open('JSON_text','r')
data = f.read()
data = json.loads(data)#转化成字典
print(data)

#dumps、loads  与  dump、load使用的区别
import json
d ={'name':'alex','age':'18'}
f=open('json_text_dump','w')
data = json.dump(d,f)#data = json.dump(d,f)等于f = open('JSON_text','w');data = json.dumps(dic)这两个表达式
f.close()

import json
f = open('json_text_dump','r')
data = json.load(f)
print('data',data)


#pickle写入   且是不可查看的
import pickle
dic ={'shopping_car':'computer','price':'7000'}
f= open('pickle_text','wb')#write() argument must be str, not bytes 将w改为wb
data = pickle.dumps(dic)
f.write(data)
f.close()

#pickle 读出
import pickle
f =open('pickle_text','rb')#'gbk' codec can't decode byte 0x80 in position 0: illegal multibyte sequence   将r转化为rb
data = f.read()
data = pickle.loads(data)
print(data)
data['shopping_car']


'''
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式   可以对其中的文件进行更改
'''

import shelve
f = shelve.open('SHELVE_text')
f['info']={'name':'alex','age':'18'}
data = f.get('info')
print('biaozhi',data)

#对文件进行更改
f['lol']={'name':'小提莫','age':'18'}
data = f.get('lol')
print('genggai',data)

#字典的一个方法补充  dict.get('2','3')  表示 查看字典中是否有键 2  如果没有就创建以2为键 3为值的字典

f['kier']={'name':'劫','age':'30'}
data = f.get('sex','male')
print('2',data)
print(data)

  

posted @ 2017-11-02 15:23  探寻猎人  阅读(154)  评论(0编辑  收藏  举报