序列化
序列:字符串
序列化:其他类型抓换为字符串
为什么要转换为字符串:
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))