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

Python基础语法 - json & pickle

时间:2018-03-24 00:36:07      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:其他   get   并且   因此   pyc   from   strong   port   网络传输   

情景

例1
dic = str({age:18})

f = open(text,w)
f.write(dic)
f.close()

例2
f = open(text,r)
data = f.read()
print(eval(data)[age])

  当我们将内存数据对象存储到文件中,是无法直接将字典对象存储,必须转化为字符串格式str(),当我们通过f.read()方法读取文件中存储的字典格式对象时,读取的也是字符串个是,必须用eval()方法转化,这种方法很Lou。

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

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

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

json模块

  再上面的情形中,更好的方法是通过Json模块,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。

import json

dic = {age:28}

#写入文件
data = json.dumps(dic)
f = open(text,w)
f.write(data)
f.close()

#读取文件
f = open(text,r)
data = f.read()
content = json.loads(data)

print(content[age])
  • json无法转化函数和类

pickle模块

      Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。

import pickle

def foo():
    print(ok)

#写入文件
data = pickle.dumps(foo)

f = open(text,wb)
f.write(data)
f.close()

#读取文件
f = open(text,rb)

data = f.read()
content = pickle.loads(data)
content()
#Can‘t get attribute ‘foo‘ on <module ‘__main__‘ from ‘C:/Users/LG/PycharmProjects/mystuff/March/day23/json_module.py‘>
  • 注意:写入模式必须为wb、rb
  • 读取文件是报错是由于找不到函数内存地址,所以如果想要读取时,函数必须在内存地址。

dump & load 方法

1. dump

import json

dic = {age:28}

f = open(text,w)
json.dump(dic,f)
f.close()
  • dump将进行转化与写入的过程

2. load

import json

f = open(text,r)
data = json.load(f)
print(data[age])
f.close()
  • load将进行转化与读取的过程

Python基础语法 - json & pickle

标签:其他   get   并且   因此   pyc   from   strong   port   网络传输   

原文地址:https://www.cnblogs.com/id19910408/p/8635424.html

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