python-shelve模块详解-------可以用类似字典的形式持久化存储

python:shelve --- Python 对象持久化 阅读详情

shelve 模块

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

使用案例:

import shelve
db1 = shelve.open('shelve_db1')
db1['dic'] = {'int':12, 'float':2.5, 'string':'shelve db'}  
#直接对文件句柄[key]操作,就可以存入数据
db1.close()

且重要的是它还会直接在打开的当前目录生成三个文件:
shelve.db1.bak
shelve.db1.dat
shelve.db1.dir

其中shelve.db1.dat 存储的就是b字节数据类型的数据,
bak和dir后缀的就可能是和数据库相关的设计缓存之类的东西了。
注:文件生成后,我们可以将前面的这一段生成shelve db的代码先行注释掉,不影响下面的继续测试操作。

db1 = shelve.open('shelve_db1')
existing = db1['dic']  
# 取出数据的时候也只需要直接用字典的操作方法获取即可,但是如果key不存在会报错
db1.close()
print(type(existing), existing)
# <class 'dict'> {'string': 'Shelve db', 'float': 2.5, 'int': 12}

例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import shelve

 

d = shelve.open('shelve_test') #打开一个文件

 

class Test(object):

    def __init__(self,n):

        self.n = n

 

 

t = Test(1) 

t2 = Test(12)

 

name = ["alex","rain","test"]

d["test"] = name #持久化列表

d["t1"] = t      #持久化类

d["t2"] = t2

 

d.close()

 

 

结:
1、shelve模块将内存数据以字典的类型(key,value)通过文件持久化,模拟出简单的db效果。
2、shelve模块可以持久化任何pickle可支持的python数据格式,但是它的key必需得是字符串。
3、shelve可以看作是pickle模块的一个封装,但它实现了可以多次dump(后面的dump不会覆盖前面的)和多次load。
4、shelve访问己有key时,实际上取出的是数据源给出的一份拷贝,
所以对于拷贝做出的增加和删除等操作都需要用writeback=True参数才能实现写入回源中进行修改。

【Python】 Shelve 模块 数据持久化的方法多种多样,从简单的文本文件(CSV, JSON, XML)到复杂的关系型数据库(MySQL, PostgreSQL, SQLite)和非关系型数据库(Redis, MongoDB),每种方案都有其特定的适用场景和优劣。然而,对于Python开发者而言,有时我们需要一种介于“普通文件存储”和“完整数据库系统”之间的轻量级解决方案——它既能提供比纯文本文件更便捷的结构化数据访问方式,又无需部署和维护一个复杂的数据库服务器。正是在这样的背景下,Python标准库中的模块应运而生。模块提供了一个简单 阅读详情

相关推荐

Python之shelve模块详解

Shelve是对象持久化保存方法,将对象保存到文件里面,缺省(即默认)的数据存储文件是二进制的。

m0_72557783的博客 2092

bak文件的奥秘,一次性解析!

在数字时代,数据已经成为我们生活和工作中不可或缺的一部分。而“.bak”文件作为数据保护和管理的重要工具,其价值和意义不言而喻。通过本文的探讨,我们深入了解了“.bak”文件的起源、本质、应用、管理以及进阶技巧等方面的内容,也澄清了一些常见的误区和迷思。希望这些知识和经验能够帮助你更好地珍惜和利用“.bak”文件,守护你的数据未来。因为在这个充满不确定性的世界里,只有确保数据的安全和可靠,才能让我们更加自信地面对未来的挑战和机遇。

weixin_44904675的博客 3854

CMIP6数据处理及在气候变化、水文、生态等领域中的应用

CMIP6、Biome-BGC、生态、气候变化、气象、水文、气候模式、植被、生态模式、遥感、极端气候、降水、WRF模式、动力降尺度、RCM、大气环流模型、贝叶斯模型、、降尺度

PhyliciaFelicia的博客 1542

Python中的shelve模块

python.shelve

weixin_46471983的博客 3005

手把手教你用Simulink搭建DSOGI-PLL模型(附完整代码下载)

本文详细介绍了在Simulink中搭建高鲁棒性DSOGI-PLL模型的完整工程实践指南。针对传统锁相环在非理想电网下的不足,文章深入剖析了双二阶广义积分器锁相环(DSOGI-PLL)的核心原理与优势,并提供了从模块构建、系统组装到参数整定与测试验证的全流程手把手教程,附有完整代码下载,助力工程师应对谐波、电压跌落等复杂电网工况。

weixin_29223603的博客 387

从零到一:龙芯杯参赛全攻略(含北理工学长经验PDF、B站培训视频与开源代码合集)

本文详细介绍了龙芯杯全国大学生计算机系统能力大赛的参赛全攻略,包括资源整合、技能树构建、团队协作和避坑指南。提供北理工学长经验PDF、B站培训视频与开源代码合集,帮助参赛者从零基础到站上领奖台。重点解析如何高效获取优质资源、避开新手常见陷阱及构建可落地的学习路径,助力普通学生系统学习CPU设计。

weixin_26802933的博客 538

Python Shelve 模块详解:高效处理大文件的持久化字典

Python shelve模块:轻量级数据持久化工具 Python的shelve模块提供了一种字典式的数据持久化方案,将键值对存储在磁盘而非内存中,特别适合处理大文件。与普通字典不同,shelve通过按需访问磁盘内容实现了高效内存管理,支持字典常规操作,但限制键必须为字符串。其持久化特性使得数据在程序关闭后仍可保留,适合地址簿管理等场景。不过,shelve依赖pickle模块,存在安全风险,且不支持并发访问。对于需要跨会话保存又无需复杂数据库的小型项目,shelve提供了一种简单有效的解决方案,但在处理不可

静水深流 2340

C# WinForm项目目录结构详解:从入门到精通(附常见问题解决方案)

本文详细解析了C# WinForm项目目录结构,从解决方案与项目基础结构到核心文件功能,再到关键目录解析,帮助开发者快速掌握WinForm项目组织方式。文章还提供了常见问题解决方案,如引用丢失、配置文件不生效等,是WinForm开发从入门到精通的实用指南。

dream的博客 647

Python shelve简单数据存储

Python的shelve模块提供了一种简单的数据存储方案,以dict(字典)的形式来操作数据。   #Python版本2.7,使用Notepad++ 6.1.5编写。 #此代码参考自《Python基础教程第2版》。 #database = shelve.open('D:\\python-test\\test.dat')此路径请自行修改。 #运行后请输入?号查看帮助,谢谢。

wdt3385的专栏 986

FreeCAD地下管道自动化建模实战:Python脚本从入门到导出OBJ

本文详细介绍了如何利用FreeCAD的Python API实现地下管道的自动化建模,从数据处理到模型导出OBJ格式的全流程。通过实战案例和代码示例,展示了圆形和矩形截面管道的创建方法,以及法兰连接等特殊处理技巧,大幅提升工程设计效率。

ff678的博客 248

Comsol固体力学仿真﹣﹣受均匀内压的厚壁球壳弹塑性分析(加载卸载全流程)

COMSOL固体力学及结构力学仿真较少,故而查询了有关资料,才建立了如下模型。图4 加载卸载全历程中的冯米塞斯应力变化。该有限元模型是通过扫掠而得的结构化网格。图2 加载卸载全历程中的塑型区域变化。图3 加载卸载全历程中的位移应力变化。图6 关键节点第一,第三主应力分布。图5 关键节点应力场与塑性区分布。《弹塑性力学》大作业,记录一下。图1 球体的有限元网格模型。

weixin_62236383的博客 1484

Python编程——shelve模块的使用详解(附实例)

1. shelve模块的介绍 (1)shelve模块:         shelve是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化。shelve只有一个open()函数,这个函数用于打开指定的文件(一个持久的字典),然后返回一个shelf对象。shelf是一种持久的、类似字典的对象。 (2)shelve模...

橘子女侠 9013

《FPGA接口与协议》专栏的说明与导航

《FPGA接口与协议》专栏的说明与导航(建议阅读)。

孤独的单刀 17万+

python3内置持久化模块shelve心得

内置模块 shelve 可以将任意 Python 对象(即 https://docs.python.org/zh-cn/3.10/library/pickle.html#module-pickle 模块能够处理的任何东西。)以类似字典的对象(shelf 对象)存在磁盘上以实现数据的持久保存。模块 shelve 生成的类似字典的对象 shelf 包含键 key 和 值 value。类字典对象 shelf 的键 key 是普通的字符串。

qslife的专栏 1260

【图像去噪】论文复现:降维打击!图像对输入变成像素对输入!Pytorch实现Noise2Void(N2V),基于U-Net模型训练,简洁明了理解N2V核心思想!附训练好的灰度图和RGB图的模型文件!

论文题目:Noise2Void-Learning Denoising from Single Noisy Images —— Noise2Void -从单个噪声图像中学习去噪【图像去噪】论文精读:Noise2Void-Learning Denoising from Single Noisy Images(N2V)由于源码是tensorflow版本,本文将基于Pytorch复现。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1355

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python基础(14)——shelve模块的详述(shelve.open的详细用法)

一、在已有json和pickle的情况下,为什么用shelve? 使用json或者 pickle 持久化数据,能 dump 多次,但 load 的话只能取到最新的 dump,因为先前的数据已经被后面 dump 的数据覆盖掉了。如果想要实现 dump 多次不被覆盖,可以使用 shelve 模块。 二、shelve模块的特点 shelve 是一个简单的数据存储方案,类似 key-value 数据...

浅浅的博客 7348

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python shelve模块的使用及注意点

介绍 shelve是python中一种存储结构化数据的模块,用法跟字典相似,以键值对的形式储存。基本使用方法: 1.引入模块 import shelve 2.创建数据文件: with shelve.open(filename) as object: object = shelve.open(filename) 两种文件操作的方式均可以。不难看出,对shelf文件数据的读写是不用指定文...

飞行的荷兰猪 3415

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python Shelve模块

前言:昨天刚刚学习练习了shelve模块,特此总结一下。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 一、定义 Shelve是对象持久化保存方法,将对象保存到文件里面,缺省(即默认)的数据存储文件是二进制的。 二、用途 可以作为一个简单的数据存储方案。 三、用法 使用时,只需要使用open函数获取一个shelf对象,然后对数据...

忆薇的博客 1348

python之shelve模块详解

一、定义 Shelve是对象持久化保存方法,将对象保存到文件里面,缺省(即默认)的数据存储文件是二进制的。 二、用途 可以作为一个简单的数据存储方案。 三、用法 使用时,只需要使用open函数获取一个shelf对象,然后对数据进行增删改查操作,在完成工作、并且将内存存储到磁盘中,最后调用close函数变回将数据写入文件。 四、关联模块Anydbm 相同点:1.anydbm,...

a9794666的博客 799

使用 Python Shelve 和 DBM 模块实现简单的数据持久化

shelve是 Python 的标准库之一,提供了一种方便的持久化存储方式。它允许开发者以键值对的形式存储 Python 对象,数据存储在文件中,使用起来类似于字典(dictshelve模块使用pickle模块将对象序列化并保存,因此几乎可以存储所有类型的 Python 对象。dbm模块也是 Python 标准库的一部分,提供了一种基于文件的键值对数据库接口。dbm允许使用简单的字符串作为键,支持对键值的持久化存储。与shelve不同,dbm模块更接近于低级数据库操作,通常适合需要高效存储和快速访问的场景。

merlon学习笔记 817

快速入门Shelve:Python数据存储利器

Shelve模块是Python标准库中的一部分,提供了一种简单的方式来将Python对象持久化到磁盘上。Shelve使用了Python的pickle模块,可以序列化和反序列化Python对象,将它们保存到磁盘文件中。这些文件可以被随时重新打开,并从中读取数据,就好像它们仍然在内存中一样。使用键值对存储数据,类似于字典。可以存储各种Python对象,包括列表、字典、自定义对象等。可以方便地将数据保存到磁盘,以及从磁盘中读取数据。

aobulaien001的博客 1641

Python 库手册:shelve 简单存储模块

shelve 是 Python 标准库中提供的简单持久化存储模块,它允许将 Python 的任意可序列化对象(如字典、列表、自定义类等)以键值对的形式存储到一个类似字典的数据库文件中。1、shelve 创建的数据库会生成多个文件(如 .db, .dat, .bak 等),文件名依操作系统和底层库而异。4、修改嵌套对象(如字典、列表)时需特别注意 writeback 参数或手动回写。键必须是字符串,值为任意可 pickle 的对象。2、键必须是字符串(str 类型),值可以是任意可 pickle 的对象。

qq_41176800的博客 1329

Python实战:数据持久化shelve模块

本文详细介绍了Python中的数据持久化:shelve模块的原理、使用方法以及在实际编程中的应用。通过具体代码示例,我们了解到shelve在Python数据持久化中的重要性。掌握shelve的使用对于实现简单、方便的数据持久化至关重要。

oandy0的博客 650

python 存储_python持久化存储之shelve

shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据。简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象,不需要像传统数据库一样,先取出数据,然后用这些数据重新构造一遍所需要的对象。示例1:#/usr/bin/env python# co...

weixin_39616798的博客 233

python对象持久化shelve模块

序列化对象:将对象转换为可以存储或传输的形式。(1) 用于存储:将对象的字节序列存储到文件中,程序退出后不会消失,便于后续使用。(2) 用于传输:发送方把对象转换为字节序列,接收方字节序列恢复为对象。反序列化:将存储或传输的字节序列恢复为对象。python的pickle模块是对象格式化和解格式化工具。对象格式化:将对象转换为字节串。解格式化:用字节串创建原始对象。把对象转为pickle字符串,存储在文件中,进行持久化保存。

sinat_34735632的博客 391
上一篇: python subprocess模块的使用 --实现与系统的交互,获取执行命令行结果等作用(FTP项目中C/S交互)
下一篇: 解决沾包问题:python 中网络编程中C/S架构中通过 struck模块制作固定长度的报头 ,从而得到传输数据的总共长度
Python_bh
博客等级 码龄7年 11粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值