码迷,mamicode.com
首页 > 编程语言 > 详细

python shelve模块

时间:2017-08-09 21:09:55      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:模块   pytho   string   class   cell   get   pickle   inf   加载   

import shelve
import datetime

d = shelve.open(‘shelve_test‘)
‘‘‘写入文件‘‘‘
info = {‘age‘: 22, ‘job‘: ‘IT‘}
name = [‘Jack‘, ‘Rose‘]
d[‘name‘] = name
d[‘info‘] = info
d[‘data‘] = datetime.datetime.now()
d.close()
‘‘‘读取文件‘‘‘
d = shelve.open(‘shelve_test‘)
print(d.get(‘name‘))
print(d.get(‘info‘))
print(d.get(‘date‘))
d.close()

  可以看出shelve模块和json对文件的操作是很像的,但是保存文件时有三个文件,如图:技术分享

具体不用管这三个文件的格式,正常的读写就行了。


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

json模块:
下面通过一些示例来学习:
首先我们来看json的dumps和loads方法
1
2
3
4
5
6
s1={"k1":"v1"}
st=json.dumps(s1)
print(st,type(st))
s=‘{"k1":"v1"}‘
dic=json.loads(s)
print(dic,type(dic))

输出结果为:

1
2
{"k1""v1"} <class ‘str‘>
{‘k1‘‘v1‘} <class ‘dict‘>

可以看出json的dumps方法处理数据时会将数据转换为字符类型,loads则会重新还原它的类型。

再来看json的dump和load方法,通过示例来了解:

1
2
3
4
li=[11,22,33]
li=json.dump(li,open(‘db‘,‘w‘))
li=json.load(open(‘db‘,‘r‘))
print(li,type(li))

Json模块dumps、loads、load、dump的区别:

load,dump可加载外部文件,处理文件的数据,dumps,loads主要处理内存中的数据

 

pickle模块:

下面我们来看pickle的dumps和loads方法,通过示例我们来了解:

1
2
3
4
5
6
import pickle
i=[11,22,33]
r=pickle.dumps(li)
print(r)
result=pickle.loads(r)
print(result)

 结果为:

1
2
b‘\x80\x03]q\x00(K\x0bK\x16K!e.‘
[112233]

pickle的dupms方法会将数据存为pickle特有的数据类型 

再看pickle的dump和load方法,通过示例我们来了解:

1
2
3
4
5
import pickle
i=[11,22,33]
pickle.dump(i,open(‘db‘,‘wb‘))
result=pickle.load(open(‘db‘,‘rb‘))
print(result)

需要注意的是dump文件或者load文件是需要使用二进制。

 

python shelve模块

标签:模块   pytho   string   class   cell   get   pickle   inf   加载   

原文地址:http://www.cnblogs.com/gilgamesh-hjb/p/7327456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!