茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    淺析Python中的序列化存儲的方法
    來源:易賢網(wǎng) 閱讀:908 次 日期:2015-04-30 14:14:40
    溫馨提示:易賢網(wǎng)小編為您整理了“淺析Python中的序列化存儲的方法”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了Python中的序列化存儲的方法,序列化存儲主要針對的是內(nèi)存和硬盤之間的寫入操作,需要的朋友可以參考下

    在程序運行的過程中,所有的變量都是在內(nèi)存中,比如,定義一個dict:

    d = dict(name='Bob', age=20, score=88)

    可以隨時修改變量,比如把name改成'Bill',但是一旦程序結(jié)束,變量所占用的內(nèi)存就被操作系統(tǒng)全部回收。如果沒有把修改后的'Bill'存儲到磁盤上,下次重新運行程序,變量又被初始化為'Bob'。

    我們把變量從內(nèi)存中變成可存儲或傳輸?shù)倪^程稱之為序列化,在Python中叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,都是一個意思。

    序列化之后,就可以把序列化后的內(nèi)容寫入磁盤,或者通過網(wǎng)絡(luò)傳輸?shù)絼e的機器上。

    反過來,把變量內(nèi)容從序列化的對象重新讀到內(nèi)存里稱之為反序列化,即unpickling。

    Python提供兩個模塊來實現(xiàn)序列化:cPickle和pickle。這兩個模塊功能是一樣的,區(qū)別在于cPickle是C語言寫的,速度快,pickle是純Python寫的,速度慢,跟cStringIO和StringIO一個道理。用的時候,先嘗試導(dǎo)入cPickle,如果失敗,再導(dǎo)入pickle:

    try:

    import cPickle as pickle

    except ImportError:

    import pickle

    首先,我們嘗試把一個對象序列化并寫入文件:

    >>> d = dict(name='Bob', age=20, score=88)

    >>> pickle.dumps(d)

    "(dp0\nS'age'\np1\nI20\nsS'score'\np2\nI88\nsS'name'\np3\nS'Bob'\np4\ns."

    pickle.dumps()方法把任意對象序列化成一個str,然后,就可以把這個str寫入文件?;蛘哂昧硪粋€方法pickle.dump()直接把對象序列化后寫入一個file-like Object:

    >>> f = open('dump.txt', 'wb')

    >>> pickle.dump(d, f)

    >>> f.close()

    看看寫入的dump.txt文件,一堆亂七八糟的內(nèi)容,這些都是Python保存的對象內(nèi)部信息。

    當(dāng)我們要把對象從磁盤讀到內(nèi)存時,可以先把內(nèi)容讀到一個str,然后用pickle.loads()方法反序列化出對象,也可以直接用pickle.load()方法從一個file-like Object中直接反序列化出對象。我們打開另一個Python命令行來反序列化剛才保存的對象:

    >>> f = open('dump.txt', 'rb')

    >>> d = pickle.load(f)

    >>> f.close()

    >>> d

    {'age': 20, 'score': 88, 'name': 'Bob'}

    變量的內(nèi)容又回來了!

    當(dāng)然,這個變量和原來的變量是完全不相干的對象,它們只是內(nèi)容相同而已。

    Pickle的問題和所有其他編程語言特有的序列化問題一樣,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的數(shù)據(jù),不能成功地反序列化也沒關(guān)系。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機網(wǎng)站地址:淺析Python中的序列化存儲的方法
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)