shelve模塊的使用

shelve模塊的使用

    • 1. 什么是Shelve
    • 2. Shelve模塊的數據存儲與讀取
    • 3. Shelve的讀取數據
    • 4. Shelve模塊的高級操作_ Shelve的數據更新和刪除
    • 5. 刪除操作可以使用del語句:
    • 6. Shelve的數據查詢和處理_使用for循環來遍歷Shelve對象中的所有鍵值對:
    • 7. Shelve模塊在文件管理中的應用
    • 8. 文件的權限和屬性管理
    • 9. Shelve模塊在網絡編程中的應用
    • 10. Shelve模塊在網絡數據存儲中的應用
    • 11. Shelve模塊在系統管理中的應用
    • 12. 進程管理和資源限制
    • 13. Shelve模塊在數據分析中的應用
    • 14. 數據存儲結構的設計
    • 15. 數據訪問模式的優化

1. 什么是Shelve

Shelve的核心優勢在于其輕量級和方便快捷。相比傳統數據庫,Shelve不需要復雜的配置和維護,同時也避免了數據遷移和數據庫版本升級的麻煩。開發者可以輕松地在應用程序中集成Shelve,實現簡單而有效的數據持久化。

2. Shelve模塊的數據存儲與讀取

import shelve
# 創建并打開一個shelve對象
db = shelve.open('test_shelve.db')
# 存儲數據
db['name'] = 'John Doe'
db['age'] = 30
db['city'] = 'New York'
# 關閉shelve對象
db.close()

3. Shelve的讀取數據

這段代碼再次打開了之前創建的test_shelve.db,通過鍵值訪問存儲在其中的數據,并且打印出來。在操作完成后同樣關閉了Shelve對象。

import shelve
# 打開shelve對象
db = shelve.open('test_shelve.db')
# 讀取數據
name = db['name']
age = db['age']
city = db['city']
print(f"Name: {name}, Age: {age}, City: {city}")
# 關閉shelve對象
db.close()

4. Shelve模塊的高級操作_ Shelve的數據更新和刪除

import shelve
# 打開shelve對象
db = shelve.open('test_shelve.db', writeback=True)
# 更新數據
db['age'] = 31
# 關閉shelve對象
db.close()

5. 刪除操作可以使用del語句:

import shelve
# 打開shelve對象
db = shelve.open('test_shelve.db')
# 刪除數據
del db['city']
# 關閉shelve對象
db.close()

6. Shelve的數據查詢和處理_使用for循環來遍歷Shelve對象中的所有鍵值對:

import shelve
# 打開shelve對象
with shelve.open('test_shelve.db') as db:for key in db:value = db[key]print(f"{key}: {value}")

7. Shelve模塊在文件管理中的應用

import shelve
# 打開一個Shelve文件,如果文件不存在,則創建一個
with shelve.open('example.db') as db:# 寫入數據db['file1.txt'] = 'This is a text file.'# 讀取數據content = db['file1.txt']print(content)# 刪除數據del db['file1.txt']

8. 文件的權限和屬性管理

import os
import shelve
# 打開Shelve文件
with shelve.open('example.db') as db:# 假設存儲的鍵是文件名,值是文件路徑file_path = db['file1.txt']# 修改文件權限os.chmod(file_path, 0o644)# 修改文件所有者os.chown(file_path, uid, gid)

9. Shelve模塊在網絡編程中的應用

import shelve
import socket
# 創建一個socket對象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 綁定端口號和IP地址
s.bind(('localhost', 8080))
# 開始監聽
s.listen(5)
# 使用Shelve模塊存儲連接信息
with shelve.open('connections.db') as db:while True:client, address = s.accept()print(f'Got connection from {address}')db[str(client)] = address# 通過Shelve存儲客戶端連接信息# 在此處可以進一步處理客戶端信息

10. Shelve模塊在網絡數據存儲中的應用

import shelve
import requests
def fetch_and_store(url):# 發送請求并獲取響應response = requests.get(url)if response.ok:# 打開Shelve數據庫with shelve.open('data.db') as db:# 將URL和響應內容存儲到數據庫中db[url] = response.text
fetch_and_store('***')

11. Shelve模塊在系統管理中的應用

import shelve
import platform
def store_system_info():# 打開Shelve數據庫with shelve.open('system_info.db') as db:# 存儲系統信息db['os_name'] = platform.system()db['os_release'] = platform.release()db['os_version'] = platform.version()
store_system_info()
# 在另一個函數中檢索系統信息
def retrieve_system_info():with shelve.open('system_info.db') as db:print(f'OS Name: {db["os_name"]}')print(f'OS Release: {db["os_release"]}')print(f'OS Version: {db["os_version"]}')
retrieve_system_info()

12. 進程管理和資源限制

import shelve
import os
import time
# 創建或打開一個Shelve文件來存儲進程信息
with shelve.open('processes.db') as db:# 模擬進程信息的記錄process_info = {'process_id': os.getpid(),'start_time': time.time(),'status': 'running'}# 將進程信息存儲到Shelve數據庫中db['process_1'] = process_info

13. Shelve模塊在數據分析中的應用

import shelve
import pandas as pd
# 從Shelve數據庫讀取數據
with shelve.open('data_analysis.db') as db:data = db['data']
# 將數據轉換為pandas DataFrame
df = pd.DataFrame(list(data.items()), columns=['Key', 'Value'])
# 進行數據分析
analysis_result = df.describe()  # 生成描述性統計信息
print(analysis_result)

14. 數據存儲結構的設計

import shelve
# 使用BTree作為存儲后端,提高性能
db = shelve.open('example.db', flag='c', writeback=True, protocol=pickle.HIGHEST_PROTOCOL)
db['key1'] = {'name': 'Alice', 'age': 30}
db['key2'] = {'name': 'Bob', 'age': 25}
db.close()

15. 數據訪問模式的優化

db = shelve.open('example.db', flag='r')
# 優化數據訪問順序
for key in sorted(db.keys()):value = db[key]# 進行數據處理print(f"Processing {key}: {value}")
db.close()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909757.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909757.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909757.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python大學校園舊物捐贈系統

目錄 技術棧介紹具體實現截圖系統設計研究方法:設計步驟設計流程核心代碼部分展示研究方法詳細視頻演示試驗方案論文大綱源碼獲取/詳細視頻演示 技術棧介紹 Django-SpringBoot-php-Node.js-flask 本課題的研究方法和研究步驟基本合理,難度適中&#xf…

Python爬蟲實戰:研究eventlet庫相關技術

1. 引言 在當今信息爆炸的時代,網絡上的數據量呈現出指數級增長的趨勢。從海量的網絡信息中獲取有價值的數據并進行分析,對于企業決策、學術研究以及個人興趣等方面都具有重要意義。網絡爬蟲作為一種自動化獲取網頁內容的技術手段,應運而生并得到了廣泛的應用。 網絡爬蟲(…

文字識別接口-智能文本處理-文字提取技術

文字識別接口,顧名思義,就是一種將圖像文字或手寫文字轉換為可編輯文本的技術。文字識別接口,基于深度學習算法與自主ocr核心實現多種場景字符的高精度識別與結構化信息提取,現已被廣泛應用于銀行、醫療、財會、教育等多個領域。 …

Redis的持久化機制詳細解析

Redis的持久化機制詳細解析 今天我們來聊聊Redis的持久化機制。想象一下,你正在玩一個非常精彩的游戲,突然斷電了,如果沒有存檔功能,所有的進度都會丟失,是不是很崩潰? Redis作為內存數據庫,同…

2025年SYN-CC混合攻擊防御實戰:某金融平臺抵御800Gbps雙重風暴實錄

“你以為防住SYN Flood就能高枕無憂?新型SYN-CC混合鏈正在撕裂傳統防御體系!” 一、事件現場:一場精準的“協議層絞殺” 2025年5月,某跨境支付平臺遭遇史上首次SYN-CC混合攻擊,峰值流量達 800Gbps,核心交易…

JSON 編輯器:從語法到數據處理(二)

JSON 編輯器:從語法編寫到結構可視化(一)-CSDN博客 在上一篇中,我們了解了 JSON 的語法和編輯器,解決了 “怎么寫對 JSON” 的問題。 而實際開發中,更關鍵的是 “怎么高效處理 JSON 數據” —— 如何從商品…

按鍵開關的結構、功能與環保安全?

工業控制的核心觸手:深度解析按鍵開關的結構、功能與環保安全 一、 結構基石:雙觸點轉換機制 按鍵開關的核心在于其精妙的觸點系統。絕大多數按鍵開關都配備有兩對獨立的觸點,這是實現復雜控制邏輯的基礎。每一對觸點并非隨意組合&#xff…

BigDetection:改進目標檢測器預訓練的大規模基準之論文閱讀

摘要 近年來,多個數據集和開放挑戰已被引入用于目標檢測研究。為了構建更通用且強大 的目標檢測系統,本文提出了一個新的大規模基準數據集,稱為 BigDetection。我們的目標是 整合現有數據集(LVIS、OpenImages 和 Object365)的訓練數據,并遵循精心設計的原則,構建一個更…

Linux系統移植⑨:uboot啟動流程詳解-bootz啟動Linux過程

Linux系統移植⑨:uboot啟動流程詳解-bootz啟動Linux過程 bootz 是 U-Boot 中用于啟動 Linux 內核的命令,專為處理 zImage(壓縮內核映像) 設計。 啟動 Linux 的完整過程: 1. 加載內核與相關文件 U-Boot 先將以下文件…

【R】基于R實現貝葉斯分析(一)

文章目錄 貝葉斯簡介Why R理論基礎一、三種先驗分布和對應后驗的計算1. 離散先驗2.Beta先驗(共軛先驗)3. 直方圖先驗 二. 后驗抽樣1. 網格點采樣法2. 其他方法 三、貝葉斯推斷1. 參數估計(1) 后驗均值(2) 后驗方差(3) 后驗區間 2. 假設檢驗3. 預測(1) 先…

論文略讀:Personality Alignment of Large Language Models

ICLR 2025 558 當前的大語言模型(LLMs)在對齊時,通常旨在反映普遍的人類價值觀與行為模式,但卻常常無法捕捉到個體用戶的獨特特征與偏好。 為填補這一空白,本文提出了**“人格對齊(Personality Alignment&…

JSON與XML怎么選?什么情況下會用到 JSON?

一、JSON 與 XML 的核心區別 從 語法、性能、適用場景 等維度對比,核心差異如下: 對比維度JSONXML語法結構鍵值對格式(如 {"name": "無線耳機"}),無標簽,結構緊湊。標簽嵌套格式&…

PCB設計實踐(三十六)PCB設計新手系統性注意事項總結

以下是PCB設計的系統性注意事項總結,涵蓋布局、布線、電源/地處理、EMC、制造工藝及驗證等關鍵環節,依據行業規范與最佳實踐整理: 一、布局設計規范 器件優先級策略 先固定接口器件(電源插座、連接器),鎖定…

LangChain中的向量數據庫抽象基類-VectorStore

文章目錄 前言一、原型定義二、常用說明1、添加或更新文檔2、添加或更新文本3、通過文檔初始化VectorStore對象4、通過文本初始化VectorStore對象5、獲得VectorStoreRetriever對象6、查詢最相似的文檔三、代碼解析1、add_documents方法2、add_texts方法3、from_documents方法4、…

5G光網絡新突破:<Light: Science Applications>報道可適應環境擾動的DRC實時校準技術

前言摘要 近日,國際頂尖光學期刊《Light: Science & Applications》刊登了一項來自中國國防科技大學研究團隊的重要成果。該團隊由姜天教授、張軍教授和郝浩教授領銜,成員包括嚴秋全、歐陽灝(共同一作)等研究人員。他們提出了…

C++:Hash拓展--布隆過濾器

布隆過濾器 問題前景: 之前學習了位圖,我們知道位圖在大量數據查找時候是很方便的。但位圖的缺陷在于只能用于整型數據。而在實際中,我們的數據更多的是更復雜的字符串或者自定義類型。那么此時位圖就顯得有點無力,所以就誕生了叫布隆過濾器…

快速了解JVM中的深堆與淺堆

在Java虛擬機(JVM)的內存管理世界里,深堆與淺堆是兩個重要的概念。它們如同衡量對象內存占用的兩把標尺,對于優化程序性能、排查內存泄漏問題起著關鍵作用。接下來,讓我們快速且深入地了解它們。 一、淺堆&#xff08…

開疆智能ModbusTCP轉Devicenet網關連接FANUC機器人配置案例

本案例是ModbusTCP主站通過開疆智能ModbusTCP轉Devicenet網關連接發那科機器人的配置案例,操作分為三個配置1:ModbusTCP主站配置2:ModbusTCP轉Devicenet網關配置3:FANUC機器人配置,具體過程如下 配置過程 主菜單—IO—…

詳解RabbitMQ高級特性之發送方確認機制

目錄 發送方確認 添加配置 常量類 聲明隊列和交換機并綁定二者關系 confirm確認模式 編寫生產消息代碼 生產消息1 解決方法 多次生產消息2 解決方法 生產消息3 return 模式 編寫生產消息代碼(路由正確) 生產消息1 編寫生產消息代碼&…

Google Play開發者賬號8.3/10.3政策違規自救指南

最近,有一位開發者焦急地向我們訴說,其辛苦開發的多個應用,毫無征兆地全部下架,賬戶提示違反政策 8.3 和 10.3。經過連夜排查,原來是換皮應用與誤導性描述導致的問題。 這并非個例,在 2024 年,G…