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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…