Python基础语法 - json & pickle

Posted 皮蛋小顽童

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础语法 - json & pickle相关的知识,希望对你有一定的参考价值。

情景

例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的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记——基础篇第七周———FTP作业(面向对象编程进阶 & Socket编程基础)

jmeter之--断言json响应&json path espressions的语法

Python基础语法—字符串&语句&集合

python汇总

Python:基础语法:数据类型 & 变量 & 常量

jQuery语法基础&选择器