python模块学习 ---- anydbm, shelve

Python之shelve模块详解 Shelve是对象持久化保存方法,将对象保存到文件里面,缺省(即默认)的数据存储文件是二进制的。 阅读详情

 

    好久没写这系列的文章了,我越来越喜欢用python了,它在我的工作中占据的比例越来越大。废话少说,直接进入主题。
    anydbm允许我们将一个磁盘上的文件与一个“dict-like”对象关联起来,操作这个“dict-like”对象,就像操作dict对象一样,最后可以将“dict-like”的数据持久化到文件。对这个"dict-like"对象进行操作的时候,key和value的类型必须是字符串。下面是使用anydbm的例子:
	#coding=utf-8

import anydbm

def CreateData():
    try:
        db = anydbm.open('db.dat', 'c')
        # key与value必须是字符串
        # db['int'] = 1
        # db['float'] = 2.3
        db['string'] = "I like python."
        db['key'] = 'value'
    finally:
        db.close()
        
def LoadData():
    db = anydbm.open('db.dat', 'r')
    for item in db.items():
        print item
    db.close()
        
if __name__ == '__main__':
    CreateData()
    LoadData()
    
     anydbm.open(filename[, flag[, mode]]),filename是关联的文件路径,可选参数flag可以是: 'r': 只读, 'w': 可读写, 'c': 如果数据文件不存在,就创建,允许读写; 'n': 每次调用open()都重新创建一个空的文件。mode是unix下文件模式,如0666表示允许所有用户读写。
    
    shelve模块是anydbm的增强版,它支持在"dict-like"对象中存储任何可以被pickle序列化的对象,但key也必须是字符串。同样的例子,与shelve来实现:
	import shelve

def CreateData():
    try:
        db = shelve.open('db.dat', 'c')
        # key与value必须是字符串
        db['int'] = 1
        db['float'] = 2.3
        db['string'] = "I like python."
        db['key'] = 'value'
    finally:
        db.close()
        
def LoadData():
    db = shelve.open('db.dat', 'r')
    for item in db.items():
        print item
    db.close()
        
if __name__ == '__main__':
    CreateData()
    LoadData()
shelve --- Python 对象持久化 使用json或者pickle持久化数据,能dump多次,但load的话只能取到最新的dump,如果想要实现dump多次不被覆盖,就可以想到使用shelve模块。 shelve模块可以持久化所有pickle所支持的数据类型。 另外,写程序的时候如果不想用关系数据库那么重量级的去存储数据,也可以用到shelve。shelf也是用key来访问的,使用起来和字典类似。 阅读详情

相关推荐

Python中的anydbm模版和shelve模版使用指南

主要介绍了Python中的anydbm模版和shelve模版使用指南,两个模版都可用于数据存储的序列化,需要的朋友可以参考下

【脚本语言系列】关于Python持久化anydbm,你需要知道的事

如何使用anydbm

Allen-Moore的博客 1004

计算机网络之NAT的解释与实验配置

NAT 静态NAT 动态NAT easy_ip NAT服务器映射

爱学习的JackYang的博客 1917

python小模块--anydbm,shelve模块

转自:http://python.01314.cn/201506145.html anydbm允许我们将一个磁盘上的文件与一个“dict-like”对象关联起来,操作这个“dict-like”对象,就像操作dict对象一样,最后可以将“dict-like”的数据持久化到文件。对这个”dict-like”对象进行操作的时候,key和value的类型必须是字符串。下面是使用anydbm的例子

栎梓天冲的专栏 874

keil4.72添加GD32F10x芯片

1. 下载 GD32F10x_AddOn_V2.0.1.rar,解压缩。 2. 安装 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe 安装位置 再新建工程,发现已经有GD32F10x 3. 增加的文件分析 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe后,在keil文件夹种增加文件如下: ...

TrueLink的博客 2762

汽车TARA分析实战:从威胁建模到安全需求落地的完整指南

在汽车电子电气系统开发中,威胁分析与风险评估(TARA)是确保功能安全与网络安全的核心方法论。其原理在于通过结构化的流程,系统性地识别资产、分析威胁场景并评估风险,旨在将安全理念前置,从设计源头规避风险。这一过程的技术价值在于将模糊的安全担忧转化为可量化、可追溯的工程需求,从而指导资源精准投放,是符合ISO 26262和ISO/SAE 21434标准要求的关键实践。其应用场景贯穿智能汽车从概念设计到系统开发的各个阶段,尤其对于涉及自动驾驶、智能座舱、车云通信等复杂功能的域控制器开发至关重要。本文聚焦于TAR

weixin_42706667的博客 304

funcd: ImportError: No module named dbm

今天在 CentOS 5.664位的机器上配置Func被控端时,在安装设置完 Func 及 Certmaster 后,启动 Funcd 提示如下错误 [root@certmaster~]#servicefuncdstart Startingfuncdaemon:Traceback(mostrecentcalllast): File...

weixin_34128501的博客 269

CTF命令执行绕过实战:从空格过滤到无回显外带的7种核心姿势

命令执行漏洞是Web安全中的常见高危漏洞,其核心原理在于应用程序未对用户输入进行充分过滤,导致攻击者能够注入并执行系统命令。在真实环境中,安全防护措施(如WAF、输入过滤函数)普遍存在,因此漏洞利用的关键技术在于“绕过”这些过滤机制。理解过滤器的运作逻辑(如黑名单、白名单、转义、长度限制)是成功绕过的前提。通过系统学习**空格绕过**、**命令黑名单绕过**、**编码混淆**等基础技巧,并结合**无回显外带**、**反弹Shell**等高级利用链,安全研究人员能够有效应对复杂防护场景。本文以CTFshow

weixin_29315091的博客 370

python报错No module named XXX解决方法

今天在搞风控模型升级的时候,遇到了这个错误 No module named XXX 起因就是执行一个python程序,在这个程序中引入了另一个文件夹中 的一个 python 文件中的变量。 所以在这个程序中使用import引入另一个文件: import abc.ABC # (abc是文件夹名,ABC是python文件名) 结果在运行的时...

lsqingfeng的博客 9万+

光耦继电器电路分析

光耦电路的分析笔记

MingYue_SSS的博客 6879

Jetson AGX Orin 部署 JetPack:从依赖缺失到系统升级的完整排障指南

本文详细介绍了在Jetson AGX Orin开发板上部署JetPack SDK的完整排障指南,包括解决依赖缺失、系统升级和常见错误处理。通过确认硬件版本、配置正确的软件源、执行系统升级和安装核心组件等步骤,帮助开发者顺利完成JetPack的安装与配置,确保AI开发环境的稳定运行。

weixin_29172963的博客 159

使用shelve对pyqt5以及matplotlib对象进行序列化与反序列化

一个对象生成的实例如果不能进行序列化,则需要对该类添加__setstate__方法和__getstate__方法 import shelve import matplotlib from PyQt5.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QPushButton from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matpl

create_list的博客 250

编写python脚本调用ordinals以及BRC20的接口

1、钱包地址生成walletreceive,对应ord命令:ord wallet receive。6、测试手动出块generate,这个只在regtest链节点用得上。所有接口都是post请求,采用postman进行测试。4、测试bitcoin转币sendtoaddress。7、测试其他的wallet方法wallet。2、钱包币种铭刻inscription,对应bitcoin-cli命令。对应bitcoin-cli命令。对应bitcoin-cli命令。fee.json文本模板。还可以加很多根据需要加减。

云深海阔专栏 1048

python之shelve模块详解

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

a9794666的博客 799

Temporal Noise Reduction(TNR)时序去噪技术解析:原理、平台实践与工程调优路径

随着高画质夜景拍照和高清视频拍摄需求的持续增长,图像传感器在低照度环境下输出信号的噪声问题日益突出。相比空间域降噪(SNR),时序去噪(Temporal Noise Reduction, TNR)利用帧间信息进行融合处理,具备更高的信噪比提升效率及更强的边缘保护能力,已成为移动影像ISP链路中的核心环节。本文系统剖析TNR的算法原理、平台实现机制与工程调试路径,并基于实际开发案例分析其在不同场景下的效果差异及调优方法,为工程师提供从理论到实操的完整路径参考。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3201

蓝牙模块HM-10手册

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

Python Shelve模块

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

忆薇的博客 1348

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python shelve模块_python中的Shelve模块不工作:“无法确定db type”

我正在尝试用Python编写一个简单的密码存储程序,它看起来非常简单,所以我想知道我是不是用错了shelve。我有主.py文件:import shelvepasswords = shelve.open('./passwords_dict.py')choice = raw_input("Add password (a) or choose site (c)?")if choice[0] == 'a'...

weixin_39689687的博客 310

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python中shelf对象_shelve 用来持久化任意的Python对象实例代码_python_脚本之家

shelve -- 用来持久化任意的Python对象这几天接触了Python中的shelve这个module,感觉比pickle用起来更简单一些,它也是一个用来持久化Python对象的简单工具。当我们写程序的时候如果不想用关系数据库那么重量级的东东去存储数据,不妨可以试试用shelve。shelf也是用key来访问的,使用起来和字典类似。shelve其实用anydbm去创建DB并且管理持久化对象的...

weixin_39615643的博客 210

Python的shelve模块

Python中的shelve这个module,感觉比pickle用起来更简单一些,它也是一个用来持久化Python对象的简单工具。当我们写程序的时候如果不想用关系数据库那么重量级的东东去存储数据,不妨可以试试用shelve。shelf也是用key来访问的,使用起来和字典类似。shelve其实用anydbm去创建DB并且管理持久化对象的。 创建一个新的shelf 直接使用shelve.ope...

莺声门径的博客 284

python中shelf对象_shelve -- 用来持久化任意的Python对象

这几天接触了Python中的shelve这个module,感觉比pickle用起来更简单一些,它也是一个用来持久化Python对象的简单工具。当我们写程序的时候如果不想用关系数据库那么重量级的东东去存储数据,不妨可以试试用shelve。shelf也是用key来访问的,使用起来和字典类似。shelve其实用anydbm去创建DB并且管理持久化对象的。创建一个新的shelf直接使用shelve.ope...

weixin_28955629的博客 248

python安装错误chosseanother,python中的货架模块不起作用:“无法确定db类型”

I am trying to make a simple password-storing program in Python, and it seems pretty simple so I am wondering if I am using shelve wrong.I have the main .py file:import shelvepasswords = shelve.open('...

weixin_30590247的博客 278

20190218-学习python使用shelve遇到raise error, "db type could not be determined"

照书上敲代码,运行了提示raise error, "db type could not be determined",现场如下: ubuntu-vm:~/code/massageboard$ python Python 2.7.6 (default, Nov 13 2018, 12:45:42) [GCC 4.8.4] on linux2 Type "help", "copyrigh...

weixin_34232744的博客 231

shelve

shelve这个module,感觉比pickle用起来更简单一些,它也是一个用来持久化Python对象的简单工具。当我们写程序的时候如果不想用关系数据库那么重量级的东东去存储数据,不妨可以试试用shelve。shelf也是用key来访问的,使用起来和字典类似。shelve其实用anydbm去创建DB并且管理持久化对象的。 创建一个新的shelf 直接使用shelve.open()就可以创建了 im...

weixin_34348174的博客 245

序列化模块json,pickle,shelve

序列化模块 序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。 说明: (1) 能存储在文件中的一定是字符串 或者是 字节 (2)能在网络上传输的 只有字节 由字典 dic --> 字符串的这个过程是序列化 由 字符串 --> dic的这个过程是反序列化 序列化 == 创造一个序列 ==》创造一个字符串 实例化 == 创造一个实例 序列化的目的 1、以某种存储形...

LuckFariy的博客 344
上一篇: python写的进程守护者
下一篇: Python模块学习 ---- fileinput
JGood
博客等级 码龄20年 498粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值