shelve模块的使用

shelve模块的使用

    • [1. 什么是Shelve](#1. 什么是Shelve)
    • [2. Shelve模块的数据存储与读取](#2. Shelve模块的数据存储与读取)
    • [3. Shelve的读取数据](#3. Shelve的读取数据)
    • [4. Shelve模块的高级操作_ Shelve的数据更新和删除](#4. Shelve模块的高级操作_ Shelve的数据更新和删除)
    • [5. 删除操作可以使用del语句:](#5. 删除操作可以使用del语句:)
    • [6. Shelve的数据查询和处理_使用for循环来遍历Shelve对象中的所有键值对:](#6. Shelve的数据查询和处理_使用for循环来遍历Shelve对象中的所有键值对:)
    • [7. Shelve模块在文件管理中的应用](#7. Shelve模块在文件管理中的应用)
    • [8. 文件的权限和属性管理](#8. 文件的权限和属性管理)
    • [9. Shelve模块在网络编程中的应用](#9. Shelve模块在网络编程中的应用)
    • [10. Shelve模块在网络数据存储中的应用](#10. Shelve模块在网络数据存储中的应用)
    • [11. Shelve模块在系统管理中的应用](#11. Shelve模块在系统管理中的应用)
    • [12. 进程管理和资源限制](#12. 进程管理和资源限制)
    • [13. Shelve模块在数据分析中的应用](#13. Shelve模块在数据分析中的应用)
    • [14. 数据存储结构的设计](#14. 数据存储结构的设计)
    • [15. 数据访问模式的优化](#15. 数据访问模式的优化)

1. 什么是Shelve

Shelve的核心优势在于其轻量级和方便快捷。相比传统数据库,Shelve不需要复杂的配置和维护,同时也避免了数据迁移和数据库版本升级的麻烦。开发者可以轻松地在应用程序中集成Shelve,实现简单而有效的数据持久化。

2. Shelve模块的数据存储与读取

python 复制代码
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对象。

python 复制代码
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的数据更新和删除

python 复制代码
import shelve
# 打开shelve对象
db = shelve.open('test_shelve.db', writeback=True)
# 更新数据
db['age'] = 31
# 关闭shelve对象
db.close()

5. 删除操作可以使用del语句:

python 复制代码
import shelve
# 打开shelve对象
db = shelve.open('test_shelve.db')
# 删除数据
del db['city']
# 关闭shelve对象
db.close()

6. Shelve的数据查询和处理_使用for循环来遍历Shelve对象中的所有键值对:

python 复制代码
import shelve
# 打开shelve对象
with shelve.open('test_shelve.db') as db:
    for key in db:
        value = db[key]
        print(f"{key}: {value}")

7. Shelve模块在文件管理中的应用

python 复制代码
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. 文件的权限和属性管理

python 复制代码
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模块在网络编程中的应用

python 复制代码
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模块在网络数据存储中的应用

python 复制代码
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模块在系统管理中的应用

python 复制代码
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. 进程管理和资源限制

python 复制代码
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模块在数据分析中的应用

python 复制代码
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. 数据存储结构的设计

python 复制代码
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. 数据访问模式的优化

python 复制代码
db = shelve.open('example.db', flag='r')
# 优化数据访问顺序
for key in sorted(db.keys()):
    value = db[key]
    # 进行数据处理
    print(f"Processing {key}: {value}")
db.close()
相关推荐
墨夏8 分钟前
TS 高级类型
前端·typescript
haokan_Jia10 分钟前
【java中使用stream处理list数据提取其中的某个字段,并由List<String>转为List<Long>】
java·windows·list
程序猿师兄17 分钟前
若依框架前端调用后台服务报跨域错误
前端
码破苍穹ovo17 分钟前
回溯----5.括号生成
java·数据结构·力扣·递归
软件20518 分钟前
【Java树形菜单系统设计与实现】
java
麓殇⊙19 分钟前
操作系统期末复习--操作系统初识以及进程与线程
java·大数据·数据库
前端小巷子20 分钟前
跨标签页通信(三):Web Storage
前端·面试·浏览器
工呈士20 分钟前
TCP 三次握手与四次挥手详解
前端·后端·面试
坏柠21 分钟前
C++ 进阶:深入理解虚函数、继承与多态
java·jvm·c++
BillKu22 分钟前
Vue3 + TypeScript + Element Plus + el-input 输入框列表按回车聚焦到下一行
前端·javascript·typescript