python用 shelve 模組儲存變數

2021-08-24 23:45:30 字數 1651 閱讀 1016

利用 shelve 模組,你可以將 python 程式中的變數儲存到二進位制的 shelf 檔案中。這樣,程式就可以從硬碟中恢復變數的資料。shelve 模組讓你在程式中新增「儲存」和「開啟」功能。例如,如果執行乙個程式,並輸入了一些配置設定,就可以將這些設定儲存到乙個 shelf 檔案,然後讓程式下一次執行時載入它們。在互動式環境中輸入以下**:

>>> import shelve

>>> shelffile = shelve.open('mydata')

>>> cats = ['zophie', 'pooka', 'simon']

>>> shelffile['cats'] = cats

>>> shelffile.close()

要利用shelve模組讀寫資料,首先要匯入它。呼叫函式shelve.open()並傳入乙個檔名,然後將返回的值儲存在乙個變數中。可以對這個變數的 shelf 值進行修改,就像它是乙個字典一樣。當你完成時,在這個值上呼叫close()。這裡,我們的shelf值儲存在shelffile中。我們建立了乙個列表cats,並寫下shelffile['cats'] =cats,將該列表儲存在shelffile 中,作為鍵'cats'關聯的值(就像在字典中一樣)。然後我們在shelffile上呼叫close()。在 windows 上執行前面的**,你會看到在當前工作目錄下有 3 個新檔案:mydata.bak、mydata.dat 和 mydata.dir。在 os x 上,只會建立乙個 mydata.db 檔案。這些二進位制檔案包含了儲存在 shelf 中的資料。這些二進位制檔案的格式並不重要,你只需要知道 shelve 模組做了什麼,而不必知道它是怎麼做的。該模組讓你不用操心如何將程式的資料儲存到檔案中。你的程式稍後可以使用 shelve 模組,重新開啟這些檔案並取出資料。shelf 值不必用讀模式或寫模式開啟,因為它們在開啟後,既能讀又能寫。在互動式環境中輸入以下**:

>>> shelffile = shelve.open('mydata')

>>> type(shelffile)

>>> shelffile['cats']

['zophie', 'pooka', 'simon']

>>> shelffile.close()

這裡,我們開啟了shelf 檔案,檢查我們的資料是否正確儲存。輸入shelffile['cats']將返回我們前面儲存的同乙個列表,所以我們就知道該列表得到了正確儲存,然後我們呼叫 close()。就像字典一樣,shelf 值有 keys()和 values()方法,返回 shelf 中鍵和值的類似列表的值。因為這些方法返回類似列表的值,而不是真正的列表,所以應該將它們傳遞給 list()函式,取得列表的形式。在互動式環境中輸入以下**:

>>> shelffile = shelve.open('mydata')

>>> list(shelffile.keys())

['cats']

>>> list(shelffile.values())

[['zophie', 'pooka', 'simon']]

>>> shelffile.close()

建立檔案時,如果你需要在 notepad 或 textedit 這樣的文字編輯器中讀取它們,純文字就非常有用。但是,如果想要儲存python 程式中的資料,那就使用shelve 模組。

Python資料持久化shelve模組用法分析

在python3中我們使用json或者pickle持久化資料,能dump多次,但只能load一次,因為先前的資料已經被後面dump的資料覆蓋掉了。如果我們想要實現dump和load多次,可以使用shelve模組。shelve模組可以持久化所有pickle所支援的資料型別。import shelve ...

python模組詳解 shelve

shelve模組是乙個簡單的k,v 將記憶體資料通過檔案持久化的模組,可以持久化任何pickle可以支援的python資料。簡單的說對 pickle的更上一層的封裝。寫檔案import shelve d shelve.open test4 這個檔案不用存在,執行自動生成 name hello chi...

Python基礎 shelve模組

usr bin env python coding utf 8 shelve模組比pickle模組簡單,只有乙個open函式,返回類似字典的物件,可讀可寫 key必須為字串,而值可以是python所支援的資料型別 import shelve f shelve.open r shelve.txt 目的...