python常用模块二
shelve
pickle
json
shelve模块
- 内部结构其实就是字典类型,存储的时候指定对应的key,将内容作为value存储起来,取出也直接通过key取出value.
注意,文件名不需要任何后缀,因为系统默认会将 .db 作为后缀名.
代码1存储内容
import shelve
def fun1():
pass
s = shelve.open(‘test_shelve‘)
s[‘dic‘] = {}.fromkeys(list(‘abcdefg‘), 0)
s[‘func‘] = fun1
s[‘list‘] = list(range(10))
s.close()
- 代码2取出内容
s = shelve.open(‘test_shelve‘)
s = shelve.open(‘test_shelve‘)
d = s.get(‘dic‘)
func = s.get(‘func‘)
lst = s.get(‘list‘)
pickle模块
写入和读取时是以字节的形式读取的,可以指定编码和解码格式
写入文件
import pickle
f = open(‘save.pkl‘, ‘wb‘, encoding=‘utf8‘)
dic = {}.fromkeys(list(‘qwertasd‘), 1)
pickle.dump(dic, f)
f.close()
- 读取文件
import pickle
f = open(‘save.pkl‘, ‘rb‘)
data = pickle.load(f)
print(data, type(data))
json模块
模块如下功能:
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
代码1:将内容以json序列化形式存入文件
s = [‘我‘, ‘你‘, ‘它‘, ‘asdas‘]
f = open(‘save.json‘, ‘w‘)
json.dump(s, f)
f.close()
- 代码2:使用json模块读取json格式内容
f1 = open(‘save.json‘, ‘r‘, encoding=‘utf8‘)
result = json.load(f1)
# result = json.loads(f1.read())
- 将字符串json序列化处理,存入文件的都是unicode格式的编码
data = json.dumps(s)
print(data, type(data))
# ["\u6211", "\u4f60", "\u5b83"] <class ‘str‘>
result = json.loads(data) # 直接反序列json序列化数据
print(result)
# [‘我‘, ‘你‘, ‘它‘]
json、pickle、shelve三个区别
主要区别有几下几点:
- pickle和shelve模块支持python所有的数据类型,包括函数;但是json只是支持dic/list/tuple/str/int等数据类型;
- pikle和shelve只能在python中使用,但是json是跨语言的;
json、pickle、shelve三个模块的作用
- 用于字符串和python或其他编程语言数据类型间进行转换,不仅可以保存数据到硬盘,还可以保存它的数据类型