python 序列化和反序列化(pickle和json)
pickle能序列化常规数据类型(元组、列表、字典、集合等),也可以序列化非常规类型(类、函数等),基本上是所以得数据类型,只能python程序使用。
Python file类型在Python是一个特殊的类型。
json 只能序列化常规类型,任何语言都可以。
###pickle
import pickle
myList = ['hello', 1, 2, 3, 'ok', 'sb']
mydump = pickle.dumps(myList)
print mydump
print type(mydump)
rs = pickle.loads(mydump)
print rs
print type(rs)
pickle.dump(myList, file('F:/python/test.txt', 'w')) //会自动关闭打开的文件
rs = pickle.load(file('F:/python/test.txt', 'r'))
print rs
输出:
(lp0
S'hello'
p1
aI1
aI2
aI3
aS'ok'
p2
aS'sb'
p3
a.
<type 'str'>
['hello', 1, 2, 3, 'ok', 'sb']
<type 'list'>
['hello', 1, 2, 3, 'ok', 'sb']
###json
import json
myList = ['hello', 1, 2, 3, 'ok', 'sb']
mydump = json.dumps(myList)
print mydump
print type(mydump)
rs = json.loads(mydump)
print rs
print type(rs)
json.dump(myList, file('F:/python/test.txt', 'w'))
rs = json.load(file('F:/python/test.txt', 'r'))
print rs
输出:
["hello", 1, 2, 3, "ok", "sb"]
<type 'str'>
[u'hello', 1, 2, 3, u'ok', u'sb']
<type 'list'>
[u'hello', 1, 2, 3, u'ok', u'sb']