您好,登錄后才能下訂單哦!
pickle(python3.x)和cPickle(python2.x的模塊)相當于java的序列化和反序列化操作。
常采用下面的方式使用:
import pickle pickle.dump(obj,f) pickle.dumps(obj,f) pickle.load(f) pickle.loads(f)
使用pickle模塊你可以把Python對象直接保存到文件,而不需要把他們轉化為字符串,也不用底層的文件訪問操作把它們寫入到一個二進制文件里。 pickle模塊會創建一個python語言專用的二進制格式,你基本上不用考慮任何文件細節,它會幫你干凈利落地完成讀寫獨享操作,唯一需要的只是一個合法的文件句柄。
pickle模塊中的兩個主要函數是dump()和load():
dump()函數接受一個文件句柄和一個數據對象作為參數,把數據對象以特定的格式保存到給定的文件中。當我們使用load()函數從文件中取出已保存的對象時,pickle知道如何恢復這些對象到它們本來的格式。
dumps()
函數執行和dump()
函數相同的序列化。取代接受流對象并將序列化后的數據保存到磁盤文件,這個函數簡單的返回序列化的數據。
loads()函數執行和load() 函數一樣的反序列化。取代接受一個流對象并去文件讀取序列化后的數據,它接受包含序列化后的數據的str對象, 直接返回的對象。
示例:
# -*- coding:utf-8 -*- import pickle obj = 123, "abcdef", ["ac", 123], {"key": "value", "key1": "value1"} print(obj) # 序列化到文件 with open(r"F:\pycodes\ML\a.txt", "wb") as f: pickle.dump(obj, f) with open(r"F:\\pycodes\\ML\\a.txt", "rb") as f: print(pickle.load(f))# 輸出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'}) # 序列化到內存(字符串格式保存),然后對象可以以任何方式處理如通過網絡傳輸 obj1 = pickle.dumps(obj) print(type(obj1))# 輸出<class 'bytes'> print(obj1)# 輸出:python專用的存儲格式 b'\x80\x03(K{X\x06\x00\x00\x00abcdefq\x00]q\x01(X\x02\x00\x00\x00acq\x02K{e}q\x03(X\x03\x00\x00\x00keyq\x04X\x05\x00\x00\x00valueq\x05X\x04\x00\x00\x00key1q\x06X\x06\x00\x00\x00value1q\x07utq\x08.' obj2 = pickle.loads(obj1) print(type(obj2))# 輸出:<class 'tuple'> print(obj2) # 輸出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'})
總結
以上所述是小編給大家介紹的Python3 pickle模塊用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。