#!/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)