Python里shelve模塊功能 持久化存儲模塊shelve的鍵值對操作

shelve模塊是python中用于持久化存儲工具,它以鍵值對形式保存數據,支持增刪改查操作。1. 寫入數據:使用shelve.open打開文件后直接賦值;2. 讀取數據:通過鍵獲取對應的值;3. 修改數據:為已有鍵重新賦值;4. 刪除數據:用del刪除指定鍵值對。適合用于存儲配置、緩存結果、保存應用狀態等場景,但需注意不能支持并發寫入、修改可變對象需重新賦值、跨平臺兼容性等問題。

python中,如果你想找一個簡單又實用的方式來保存數據,shelve模塊是個不錯的選擇。它能讓你像操作字典一樣存儲和讀取數據,并且數據是持久化的,也就是說程序退出后數據還在。

什么是shelve模塊?

shelve 是 Python 標準庫中的一個模塊,它的核心功能是提供持久化存儲能力。你可以把它理解成一個“磁盤上的字典”,通過鍵值對(key-value)的方式把數據存到文件里,下次再讀出來用。

使用上很簡單:打開一個 shelve 文件,就可以像操作普通字典那樣賦值、取值、刪除。它底層其實是基于 pickle 模塊來序列化對象的。

如何進行鍵值對操作?

shelve 的基本用法非常直觀,主要就是增刪改查幾個動作:

立即學習Python免費學習筆記(深入)”;

  • 寫入數據

    打開文件后直接像字典一樣賦值就行:

    import shelve  with shelve.open('mydata') as db:     db['name'] = 'Alice'     db['age'] = 25
  • 讀取數據

    同樣用 key 來獲取 value:

    with shelve.open('mydata') as db:     print(db['name'])  # 輸出 Alice
  • 修改數據

    直接給已有的 key 賦新值即可:

    with shelve.open('mydata') as db:     db['age'] = 26
  • 刪除數據

    使用 del 刪除某個鍵值對:

    with shelve.open('mydata') as db:     del db['age']

需要注意的是,shelve 存儲的對象必須是可以被 pickle 序列化的,比如列表、字典、數字、字符串這些沒問題,但自定義類對象需要小心處理。

常見使用場景有哪些?

shelve 最適合用于一些輕量級的數據持久化需求,比如:

  • 存儲配置信息
  • 緩存計算結果避免重復執行
  • 小型應用的狀態保存(如游戲進度)

舉個例子,你寫了個爬蟲,每次都要請求網頁很慢,那可以把已經抓取過的內容用 url 作為 key 存起來,下次先查有沒有緩存,沒有再請求。

有什么注意事項?

雖然 shelve 簡單好用,但也有一些容易忽略的地方:

  • 它不是數據庫替代品,不能支持并發寫入,多個進程同時寫可能出錯。

  • 修改可變對象時要記得重新賦值,否則不會保存改動:

    with shelve.open('mydata') as db:     lst = db.get('mylist', [])     lst.append(1)     db['mylist'] = lst  # 必須重新賦值才能保存
  • 默認是以讀寫模式打開文件,如果希望只讀可以加參數:

    shelve.open('mydata', flag='r')
  • 不同操作系統下生成的文件格式可能有差異,注意跨平臺兼容性問題。

基本上就這些了。用得合適的話,shelve 可以幫你省不少事,特別是快速開發小工具或腳本的時候。

以上就是Python里shelve模塊功能

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享