日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python学习笔记 day20 序列化模块(二)

發布時間:2024/8/26 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python学习笔记 day20 序列化模块(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pickle

可以將任何數據類型轉為字符串;但是pickle之后的結果也只有python可以看懂,而且反序列化依靠python代碼;

pickle 和 json 很像 都是有dumps loads dump 和 load 四個方法;

但是 pickle 序列化之后的結果是一串二進制(bytes類型)所以pickle 在使用 dump 和 load 進行和文件相關的操作時 需要以二進制的方式打開文件,加上b;

1. pickle.dumps()---將任何數據類型進行序列化(pickle序列化的結果是bytes類型)

? ? pickle.loads()---反序列化,轉回原來的數據類型;

import pickle dict={'a':1,'b':2,'c':3} print(dict,type(dict)) str_dic=pickle.dumps(dict) # 使用pickle.dumps()將字典序列化 print(str_dic,type(str_dic)) dic_2=pickle.loads(str_dic) print(dic_2,type(dic_2))

運行結果:

?

2. pickle.dump() -----文件操作有關,注意此時文件必須以二進制方式打開,序列化;

? ? pickle.load()--- 反序列化,文件必須以二進制方式打開;

? ? pickle.dump()和 pickle.load() 可以對多個數據類型進行寫入文件操作,然后一個一個讀出來,也就是支持多次dump 和 多次load (json.dump() 和 json.load()是不直接支持這種操作的)

import pickle dic={'a':1,'b':2,'c':3} f=open('info','wb') # pickle.dump()在對數據類型進行序列化時,文件比如以二進制方式打開,但是encoding=utf-8就不需要了,因為本身bytes類型就是utf-8 pickle.dump(dic,f) # pickle.dump()是沒有返回值的,但是pickle.dumps() pickle.loads() pickle.load()都有返回值 f.close() f=open('info','rb') # pickle.load()在進行反序列化時,文件也必須是二進制方式打開; dic_2=pickle.load(f) print(dic_2,type(dic_2)) f.close()

運行結果:

然而此時dump進文件的內容是看不懂的~并且會生成三個文件:

?

再來看pickle.dump()? pickle.load() 多次dump 和 多次load 的情況(json.dump() 和 json.load()是不支持的)

import pickle import time struct_time1=time.localtime(1600000000) # 這次使用的數據類型是結構化元組(struct_time數據類型) struct_time2=time.localtime() f=open('info','wb') pickle.dump(struct_time1,f) # 對struct_time這種數據類型進行多次dump pickle.dump(struct_time2,f) f.close()f=open('info','rb') struct_time1=pickle.load(f) # 對剛才序列化之后的結果多次load struct_time2=pickle.load(f) print(struct_time1,type(struct_time1)) print(struct_time2) print(struct_time1.tm_year) print(struct_time2.tm_year)

運行結果:

?

轉載于:https://www.cnblogs.com/xuanxuanlove/p/9650834.html

總結

以上是生活随笔為你收集整理的python学习笔记 day20 序列化模块(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。