91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中cPickle類使用方法詳解

發布時間:2020-09-17 20:28:48 來源:腳本之家 閱讀:187 作者:怒河春醒 欄目:開發技術

在python中,一般可以使用pickle類來進行python對象的序列化,而cPickle提供了一個更快速簡單的接口,如python文檔所說的:“cPickle – A faster pickle”。

cPickle可以對任意一種類型的python對象進行序列化操作,比如list,dict,甚至是一個類的對象等。而所謂的序列化,我的粗淺的理解就是為了能夠完整的保存并能夠完全可逆的恢復。在cPickle中,主要有四個函數可以做這一工作,下面使用例子來介紹。

1. dump: 將python對象序列化保存到本地的文件

import cPickle
 data = range(1000)
 cPickle.dump(data,open("test\\data.pkl","wb"))

dump函數需要指定兩個參數,第一個是需要序列化的python對象名稱,第二個是本地的文件,需要注意的是,在這里需要使用open函數打開一個文件,并指定“寫”操作

2. load:載入本地文件,恢復python對象

data = cPickle.load(open("test\\data.pkl","rb")) 

同dump一樣,這里需要使用open函數打開本地的一個文件,并指定“讀”操作

3. dumps:將python對象序列化保存到一個字符串變量中

data_string = cPickle.dumps(data)

4. loads:從字符串變量中載入python對象

data = cPickle.loads(data_string)

5. pickle模塊使用的數據格式是python專用的,并且不同版本不向后兼容,同時也不能被其他語言說識別。要和其他語言交互,可以使用內置的json包

使用pickle模塊你可以把Python對象直接保存到文件,而不需要把他們轉化為字符串,也不用底層的文件訪問操作把它們寫入到一個二進制文件里。 pickle模塊會創建一個python語言專用的二進制格式,你基本上不用考慮任何文件細節,它會幫你干凈利落地完成讀寫獨享操作,唯一需要的只是一個合法的文件句柄。

pickle模塊中的兩個主要函數是dump()和load()。dump()函數接受一個文件句柄和一個數據對象作為參數,把數據對象以特定的格式保存 到給定的文件中。當我們使用load()函數從文件中取出已保存的對象時,pickle知道如何恢復這些對象到它們本來的格式。

  • dumps()函數執行和dump() 函數相同的序列化。取代接受流對象并將序列化后的數據保存到磁盤文件,這個函數簡單的返回序列化的數據。
  • loads()函數執行和load() 函數一樣的反序列化。取代接受一個流對象并去文件讀取序列化后的數據,它接受包含序列化后的數據的str對象, 直接返回的對象。

cPickle是pickle得一個更快得C語言編譯版本。

pickle和cPickle相當于java的序列化和反序列化操作

#! /usr/local/env python
# -*- coding=utf-8 -*-

if __name__ == "__main__":
  import cPickle

#序列化到文件
obj = 123,"abcdedf",["ac",123],{"key":"value","key1":"value1"}
print obj
#輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})
#r+ 讀寫權限 r+b 讀寫到二進制文件
f = open(r"d:\a.txt","r+")
cPickle.dump(obj,f)
f.close()
f = open(r"d:\a.txt")
print cPickle.load(f)
#輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})

#序列化到內存(字符串格式保存),然后對象可以以任何方式處理如通過網絡傳輸
obj1 = cPickle.dumps(obj)
print type(obj1)
#輸出:<type 'str'>
print obj1
#輸出:python專用的存儲格式
obj2 = cPickle.loads(obj1)
print type(obj2)
#輸出:<type 'tuple'>
print obj2
#輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三都| 兰西县| 贵溪市| 边坝县| 明光市| 钦州市| 涞源县| 雷波县| 无锡市| 原平市| 台东县| 马尔康县| 霞浦县| 湖州市| 秦皇岛市| 察雅县| 洛宁县| 郓城县| 巍山| 岳阳市| 丹阳市| 曲水县| 五莲县| 西青区| 仪陇县| 新竹市| 呼玛县| 金乡县| 德令哈市| 肇州县| 博野县| 新绛县| 教育| 湘西| 独山县| 清涧县| 柯坪县| 昭平县| 兰考县| 方山县| 山丹县|