<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
pickle 模組可以對一個 Python 物件的二進位制進行序列化和反序列化。說白了,就是它能夠實現任意物件與二進位制直接的相互轉化,也可以實現物件與文字之間的相互轉化。
比如,我程式裡有一個 python 物件,我想把它存到磁碟裡,於是我用 pickle 把他轉到一個文字裡。當後面我想使用的時候,讀取出來時候依然是一個 python 物件。
pickle 模組提供了以下 4 種方法:
將 Python 中的物件序列化成二進位制物件,並直接返回。
範例
import pickle test_list = ["pingguo", {1, 2, 3}, None] # 使用 dumps() 函數將 test_list 轉成 p1 p1 = pickle.dumps(test_list) print(p1) print("返回型別:", type(p1))
輸出結果:
b'x80x03]qx00(Xx07x00x00x00pingguoqx01cbuiltinsnsetnqx02]qx03(Kx01Kx02Kx03ex85qx04Rqx05Ne.' 返回型別: <class 'bytes'>
讀取給定的二進位制物件資料,並將其轉換為 Python 物件。
範例在上面的基礎上繼續:
import pickle test_list = ["pingguo", {1, 2, 3}, None] # 使用 dumps() 函數將 test_list 轉成 p1 p1 = pickle.dumps(test_list) print(p1) print("返回型別:", type(p1)) # 使用 loads() 函數將 p1 轉成 Python 物件 p2 p2 = pickle.loads(p1) print(p2) print("返回型別:", type(p2))
輸出結果:
b'x80x03]qx00(Xx07x00x00x00pingguoqx01cbuiltinsnsetnqx02]qx03(Kx01Kx02Kx03ex85qx04Rqx05Ne.' 返回型別: <class 'bytes'> ['pingguo', {1, 2, 3}, None] 返回型別: <class 'list'>
pickle 反序列化後的物件與原物件是等值的副本物件,類似deepcopy。
將 Python 中的物件序列化成二進位制物件,並寫入檔案。
範例
import pickle test_list = ["pingguo", {1, 2, 3}, None] with open("test_pickle.txt", "wb") as f: # 使用 dump() 函數將 test_list 轉成 p1,寫到txt文字裡 pickle.dump(test_list, f)
注意這裡的寫檔案是 "wb",以二進位制格式開啟一個檔案只用於寫入,否則會報錯。
執行成功後,同級目錄下生成一個test_pickle.txt
檔案,因為是二進位制內容,直接開啟看到的是亂碼。
讀取指定的序列化資料檔案,並返回物件。
範例
import pickle test_list = ["pingguo", {1, 2, 3}, None] with open("test_pickle.txt", "wb") as f: # 使用 dump() 函數將 test_list 轉成 p1,寫到txt文字裡 pickle.dump(test_list, f) with open("test_pickle.txt", "rb") as f: # 將二進位制檔案物件轉換成 Python 物件 p3 p3 = pickle.load(f) print(p3) print("型別:", type(p3))
注意,這裡讀取檔案用rb
,也就是以二進位制格式開啟一個檔案用於唯讀。
執行成功。
['pingguo', {1, 2, 3}, None] 型別: <class 'list'>
下列型別可以被封存:
python 提供的 json 標準庫相信大家都熟悉,提供的方法也與 pickle 相似,那麼兩者有什麼區別呢?
關於最後一點,說的是 pickle 模組並不安全。很有可能你去解封的是惡意構建的 pickle 資料,造成解封時執行了惡意程式碼,所以要慎用。
以上就是用來將物件持久化的python pickle模組的詳細內容,更多關於python物件持久化pickle模組的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45