python json,pickle模块

Posted manuel

tags:

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

json模块

不同语言间的数据交互

eval方法可以将一个字符串转成python对象,但eval方法是有局限性,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型(函数、类等)的时候,eval就不管用了,因此eval通常用来执行一个字符串表达式,并返回表达式的值。

dic={"name":"alex"}
f=open(hello,w)
f.write(dic)

#eval方法将字符串转换为python的数据类型
f_read=open(hello,r)
data=f_read.read()
print(data)
print(eval(data)[name])

 

 

json.dumps()将对象转换为json类型的字符串

json.loads()将json类型的字符串解析成解释器对应的数据类型

import json


dic={"name":"alex"}

# #将对象(无论什么类型)转化为json字符串,将字符串的引号变为双引号
# data=json.dumps(dic)
# print(data)
# print(type(data))
#
# f=open(‘new_hello‘,‘w‘)
# f.write(data)

f_read=open(new_hello,r)
read_data=json.loads(f_read.read())
print(read_data)
print(type(read_data))

json.dump(data,f)相当于json.dumps(data)+f.write(data)

json.load(f_read)相当于json.loads()+f_read.read()

 

json.dumps()与json.loads()无需成对使用,只要符合json字符串的格式即可以用json.loads()方法

 

 

pickle模块

将对象转换为字节形式,与json模块的方法完全类似,只不过读写文件的形式为二进制‘wb‘,‘rb‘形式读写

#序列化
import pickle
 
dic={name:alvin,age:23,sex:male}
 
print(type(dic))#<class ‘dict‘>
 
j=pickle.dumps(dic)
print(type(j))#<class ‘bytes‘>
 
 
f=open(序列化对象_pickle,wb)#注意是w是写入str,wb是写入bytes,j是‘bytes‘
f.write(j)  #-------------------等价于pickle.dump(dic,f)
 
f.close()
#-------------------------反序列化
import pickle
f=open(序列化对象_pickle,rb)
 
data=pickle.loads(f.read())#  等价于data=pickle.load(f)
 
 
print(data[age])

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

以上是关于python json,pickle模块的主要内容,如果未能解决你的问题,请参考以下文章

python模块(json和pickle模块)

Python json和pickle模块

python基础(20):序列化json模块pickle模块

python开发模块基础:序列化模块json,pickle,shelve

python json & pickle 模块

python --- json模块和pickle模块详解