当前位置: 首页 > news >正文

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.lryc.cn/news/571695.html

相关文章:

  • 论文阅读笔记 | Qwen-VL:一个视觉语言大模型,通晓理解、定位、文本阅读等多种能力
  • 基于 Python Django 框架的在线租房管理系统设计与实现
  • ROS2 笔记汇总(2) 通信接口
  • 阿里云中间件:解锁云端应用的强大引擎
  • C++之多态
  • Flutter 学习 之 const
  • window显示驱动开发—流输出阶段
  • 解决你的100个问题——梦想
  • 正态分布:AI大模型中的概率统计基石
  • 我的256天创作纪念日
  • 【5G通信基础】UCI上行链路控制信息简介
  • 义乌购平台店铺商品接口开发指南
  • TIGAR 如何逆转多囊卵巢综合征的困局【AbMole】
  • 分发平台是一个专注于APP应用分发
  • 《Effective Python》第九章 并发与并行——使用 Queue 实现并发重构
  • 跟着AI学习C# Day20
  • SKUA-GOCAD入门教程-第八节 线的创建与编辑5
  • Web攻防-XSS跨站浏览器UXSS突变MXSSVueReactElectron框架JQuery库写法和版本
  • ubuntu下python版本升级导致pyqt不能正常运行解决
  • CppCon 2017 学习:C++ atomics:from basic to advanced. What do they do?
  • Java大模型开发入门 (15/15):总结与展望 - Java开发者的AI进阶之路
  • 单例模式:全局唯一实例的设计艺术
  • web3.js v4.x 模块架构
  • linux618 NFS web.cn NFS.cn backup.cn
  • 亚矩阵云手机+Whatnot:直播电商的自动化增长引擎
  • Linux lsof 命令详解+实例
  • 【Python与生活】如何实现一个条形码检测算法?
  • IEEE RAL 双臂机器人三连抓估计物体状态 无需特制夹爪或视觉相机 - 大阪大学万伟伟老师团队
  • PCL 四元数转轴角
  • 【学习笔记】2.1注意力机制