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']

 
原文地址:https://www.cnblogs.com/3one/p/5532804.html