大聊Python----json与pickle数据序列化

用于序列化的两个模块

  json,用于字符串和python数据类型间进行转换

  pickle,用于python特有的类型和python的数据类型间进行转换

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

那我们先来看看json怎么使用的吧!

关于序列化操作,看看屌丝是怎么写的!

##序列化操作##

info = {
    "name":"sutaoyu",
    "age" :"25"
}

f = open("text.text","w")
f.write(str(info))    

f.close()

##反序列化操作##

f = open("text.text","r")

data = eval(f.read())
print(data["age"])
f.close()

text.text文件里的内容为:

{'name': 'sutaoyu', 'age': '25'}

反序列化操作的结果为:

25

下面看看大神是怎么装逼的!

##序列化##

import json
info = {
    "name":"sutaoyu",
    "age" :"25"
}

f = open("text.text","w")
f.write( json.dumps(info) )

f.close()

##反序列化##

import json
f = open("text.text","r")

data = json.loads(f.read())
print(data["age"])
f.close()

反序列化操作的结果为:

25

是不是觉得程序很简单啊?

那就玩个大的!pickle模块!

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

 

## 序列化 ##

import pickle

def sayhi(name):
    print("hello,",name)

info = {
    "name":"sutaoyu",
    "age" :"25",
    "func":sayhi
}

f = open("text.text","wb")
f.write( pickle.dumps(info) ) # f.write(pickle.dumps(info)) == pickle.dump(info,f)

f.close()

## 反序列化 ##

import pickle

def sayhi(name):
    print("hello,",name)

f = open("text.text","rb")  # rb 处理的是 二进制 ,r 处理的是 字符串

data = pickle.loads(f.read())  # data = pickle.loads(f.read()) == pickle.load(f) 

# print(data)

print(data["age"])

print(data["func"]("Alex"))
f.close()

反序列化得出的结果为:

 25

hello, Alex
None

 

posted @ 2018-07-01 15:51  追风的小蚂蚁  阅读(246)  评论(0编辑  收藏  举报