序列化模块

 

序列化

序列:字符串

序列化:其他类型抓换为字符串

 

 

为什么要转换为字符串:

1:数据存入文件,只能是二进制,或者文本,

2:基于网络传输的数据

 

 

什么数据能转为二进制?

只有字符串

 

 

序列化:其他数据类型转为字符串

反序列化:字符串转换为其他类型

 

 

这个方法太局限化,这个只能在py中使用:

d = [1,2,3,4]
d = str(d)
eval(d)

 

 

 

你有一个数据,想把它变成字符串放入文件,

你拿出这个数据的时候,他还能变回来

别的语言,也能解读,并且解读为对应的数据类型

 

json模块

json模块(**)(跨语言)

所有语言都支持json格式

就相当于各个国家的翻译

(支持的数据类型很少)

字符串

列表

字典

整型

浮点型

布尔值

元组 (不是所有数据类型都有,他会转换为列表)

 

 

pickle模块

pickle模块()(不能跨语言)

只能python

python所有的数据类型都支持

 


 

 json

 

##################################

# dumps loads

d = {'name':'jason'}

# d = {"name":"jason"} # python会给你转换为单引号字符串

print(d)

res = json.dumps(d) # json格式的字符串 不显示双引号

print(res,type(res))

 

res1 = json.loads(res)

print(res1,type(res1))

 

 

##################################

# dump load

结合文件一起使用

直接转换为字符串,然后直接保存到文件中

 

d = {'name':'jason'}

 

########## 写入

with open('xuliehuatest.txt','w',encoding='utf-8') as f:

json.dump(d,f) # 转为字符串,然后自动写入文件

# d 是需要写入的数数据,f是写入的文件

 

########## 读取

with open('xuliehuatest.txt','r',encoding='utf-8') as f:

res = json.load(f)

# res是读在哪,f是读取的文件

print(res)

 

 

 

写入多份份数据

 

#########################################################################

# 不可行

with open('xuliehuatest.txt','w',encoding='utf-8') as f:

json.dump(d,f) # 转为字符串,然后自动写入文件

json.dump(d,f) # 转为字符串,然后自动写入文件

 

with open('xuliehuatest.txt','r',encoding='utf-8') as f:

# res = json.load(f)

# res = json.load(f)

# print(res)

pass

##########################################################################

 

 

 

 

############ 15:23##########没对

with open('xuliehuatest.txt','w',encoding='utf-8') as f:

json_str = json.dumps(d)

json_str1 = json.dumps(d)

f.write('%s\n'%json_str)

f.write('%s\n'%json_str1)

 

with open('xuliehuatest.txt','r',encoding='utf-8') as f:

for line in f:

res = json.dumps(line)

print(res)

 

 

 

# 关于转码

d1 = {'name':'我是'}

print(json.dumps(d1,ensure_ascii=False)) # 不会转码

print(json.dumps(d1)) # 会转码

 



'''

 

pickle

 

# pickle

import pickle

'''

用pickle操作文件的时候,文件打开模式必须是b模式

 

'''

 

 

d = {'name':'pslcy'}

 

# res = pickle.dumps(d) # 会将对象转换为二进制

# print(res)

# print(pickle.dumps(d))

#

# res1 = pickle.loads(res)

# print(res1,type(res1))

 

# with open('xuliehuatest2.txt','w',encoding='utf-8') as f:

 

with open('xuliehuatest2.txt','wb') as f:

pickle.dump(d,f)

 

 

with open('xuliehuatest2.txt','rb') as f:

res1 = pickle.load(f)

print(res1,type(res1))

 

上一篇:Python字符串详解


下一篇:字符编码