您的位置:首页 > 编程语言 > Python开发

Python数据交互之json、pickle、shelve

2017-12-05 14:47 706 查看

1、JSON

json模块的好处是什么数据类型存入文件,就以什么数据类型取出来,不需要多余的转换

#! -*- encoding:utf-8 -*-
# json

import json

# json.dumps方法写入文件
da = {'name':'liujun', 'age':'23'}

f = open('JSON_text','w')

a = json.dumps(da)        # dumps 处理
f.write(a)

f.close()

# json.loads方法读取
f = open('JSON_text','r')

a = f.read()
a = json.loads(a)       # loads 处理

print(a['age'])

f.close()

########################

# json.dump方法写入文件
di = {'name':'liujun', 'age':'23', 'sex':'man'}

f = open('JSON_text','w')

json.dump(di,f)         # dump 处理

f.close()

# json.load方法读取文件

f = open('JSON_text','r')

d = json.load(f)        # load 处理

print(d['sex'])

f.close()

import json

# p = "{'haha':'hehe', 'xixi':66}" # json 转换字符串内容不能用单引号,会报错
p = '{"haha":"hehe", "xixi":66}' # 这样写才是对的

u = json.loads(p)

print(type(u), u) # <class 'dict'> {'haha': 'hehe', 'xixi': 66}



2、PICKLE

pickle在json的基础上,增加里可以存取特殊类型数据,写入的文件格式是二进制的

#! -*- encoding:utf-8 -*-
# pickle跟json使用方法一样,以二进制写入文件
# 跟json不同的是pickle可以把特殊形式的变量写入文件,比如一个函数变量
import pickle

def foo():
print('ok')

#
# pickle.dumps方法写入文件
f = open('PICKLE_text','wb')

date = pickle.dumps(foo)
f.write(date)

f.close()

#
# pickle.loads方法读取文件
f = open('PICKLE_text', 'rb')

date = f.read()
date = pickle.loads(date)    # 存的只是函数对象内存地址,所以读出来的只是一个地址

date()

f.close()

#
# pickle.dump方法写入文件
f = open('PICKLE_text', 'wb')

pickle.dump(foo,f)

f.close()

#
# pickle.load方法读取文件
f = open('PICKLE_text', 'rb')

date = pickle.load(f)       # 读出文件句柄

date()

f.close()


3、SHELVE

shelve会把数据存到一个加密的数据库文件里

#! -*- encoding:utf-8 -*-

# shelve 模块应用,把内容存到一个数据库文件里

import shelve

# shelve写入
f = shelve.open('SHELVE_text')      # 生成shelve对象

f['info'] = {'name':'liujun', 'age':'23', 'sex':'man'}      # 直接以句柄变量存入一个字典

f.close()

################

# shelve读取
f = shelve.open('SHELVE_text')     # 生成shelve对象

print(f.get('info'))            # 用get方法取字典的值

print(f['info'].get('name'))

print(f.get('like', 'ganmes'))      # get 方法 ,
# 后面可以跟一个默认值,如果字典里没有这个键,就使用默认值
f.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: