python开发_shelve_完整版_博主推荐
- '''
- python中的shelve模块,可以提供一些简单的数据操作
- 他和python中的dbm很相似。
- 区别如下:
- 都是以键值对的形式保存数据,不过在shelve模块中,
- key必须为字符串,而值可以是python所支持的数据
- 类型。在dbm模块中,键值对都必须为字符串类型。
- sh['a'] = 'a'
- sh['c'] = [11, 234, 'a']
- sh['t'] = ('1', '2', '3')
- sh['d'] = {'a':'2', 'name':'Hongte' }
- sh['b'] = 'b'
- sh['i'] = 23
- 我们可以获取一个shelve对象
- sh = shelve.open('c:\\test\\hongten.dat', 'c')
- 删除shelve对象中的某个键值对
- del sh['d']
- 遍历所有数据
- for item in sh.items():
- print('键[{}] = 值[{}]'.format(item[0], sh[item[0]]))
- 获取某个键值对
- print(sh['a'])
- 关闭shelve对象:
- sh.close()
- ####################################################
- #### API中强调
- Do not rely on the shelf being closed automatically;
- always call close() explicitly when you don’t need
- it any more, or use a with statement with
- contextlib.closing().
- ####################################################
- '''
下面是我做的demo,在demo中我做了比较详细的注释和说明,详情如下:
运行效果:
SHOW_LOG = False
- Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
- Type "copyright", "credits" or "license()" for more information.
- >>> ================================ RESTART ================================
- >>>
- SHOW_LOG : False
- 删除所有数据...
- 保存数据...
- ##################################################
- 遍历所有数据...
- 数据[gender] = [M]
- 数据[phone] = [('13423****62', '18998****62')]
- 数据[age] = [22]
- 数据[name] = [Hongten]
- 数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- ##################################################
- 更新数据...
- ##################################################
- 遍历所有数据...
- 数据[gender] = [M]
- 数据[phone] = [('13423****62', '18998****62', '020-90909090')]
- 数据[name] = [Hongten]
- 数据[hoby] = [('篮球', '羽毛球', '乒乓球', '游泳')]
- 数据[age] = [23]
- 数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- ##################################################
- 获取某个数据...
- 获取[address]的值:{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}
- ##################################################
- 删除某个数据...
- ##################################################
- 遍历所有数据...
- 数据[gender] = [M]
- 数据[phone] = [('13423****62', '18998****62', '020-90909090')]
- 数据[age] = [23]
- 数据[name] = [Hongten]
- 数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- ##################################################
- 删除所有数据...
- ##################################################
- 遍历所有数据...
- >>>
SHOW_LOG = True
- Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
- Type "copyright", "credits" or "license()" for more information.
- >>> ================================ RESTART ================================
- >>>
- SHOW_LOG : True
- 删除所有数据...
- 保存数据...
- 保存数据[age] = [22]
- 保存数据[gender] = [M]
- 保存数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- 保存数据[phone] = [('13423****62', '18998****62')]
- 保存数据[name] = [Hongten]
- ##################################################
- 遍历所有数据...
- 数据[age] = [22]
- 数据[name] = [Hongten]
- 数据[gender] = [M]
- 数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- 数据[phone] = [('13423****62', '18998****62')]
- ##################################################
- 更新数据...
- 更新数据[name] = [Hongten]
- 更新数据[hoby] = [('篮球', '羽毛球', '乒乓球', '游泳')]
- 更新数据[phone] = [('13423****62', '18998****62', '020-90909090')]
- 更新数据[age] = [23]
- ##################################################
- 遍历所有数据...
- 数据[age] = [23]
- 数据[gender] = [M]
- 数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- 数据[hoby] = [('篮球', '羽毛球', '乒乓球', '游泳')]
- 数据[phone] = [('13423****62', '18998****62', '020-90909090')]
- 数据[name] = [Hongten]
- ##################################################
- 获取某个数据...
- 获取[address]的值:{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}
- ##################################################
- 删除某个数据...
- 删除[hoby]的数据
- ##################################################
- 遍历所有数据...
- 数据[age] = [23]
- 数据[name] = [Hongten]
- 数据[gender] = [M]
- 数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- 数据[phone] = [('13423****62', '18998****62', '020-90909090')]
- ##################################################
- 删除所有数据...
- 删除数据[age] = [23]
- 删除数据[gender] = [M]
- 删除数据[address] = [{'hometown': 'Shuifu,Yunnan', 'nowadd': 'Guangzhou,Guangdong'}]
- 删除数据[phone] = [('13423****62', '18998****62', '020-90909090')]
- 删除数据[name] = [Hongten]
- ##################################################
- 遍历所有数据...
- >>>
=====================================================
代码部分:
=====================================================
- #python shelve
- #Author : Hongten
- #MailTo : hongtenzone@foxmail.com
- #QQ : 648719819
- #Blog : http://www.cnblogs.com/hongten
- #Create : 2013-08-09
- #Version: 1.0
- import shelve
- '''
- python中的shelve模块,可以提供一些简单的数据操作
- 他和python中的dbm很相似。
- 区别如下:
- 都是以键值对的形式保存数据,不过在shelve模块中,
- key必须为字符串,而值可以是python所支持的数据
- 类型。在dbm模块中,键值对都必须为字符串类型。
- sh['a'] = 'a'
- sh['c'] = [11, 234, 'a']
- sh['t'] = ('1', '2', '3')
- sh['d'] = {'a':'2', 'name':'Hongte' }
- sh['b'] = 'b'
- sh['i'] = 23
- 我们可以获取一个shelve对象
- sh = shelve.open('c:\\test\\hongten.dat', 'c')
- 删除shelve对象中的某个键值对
- del sh['d']
- 遍历所有数据
- for item in sh.items():
- print('键[{}] = 值[{}]'.format(item[0], sh[item[0]]))
- 获取某个键值对
- print(sh['a'])
- 关闭shelve对象:
- sh.close()
- ####################################################
- #### API中强调
- Do not rely on the shelf being closed automatically;
- always call close() explicitly when you don’t need
- it any more, or use a with statement with
- contextlib.closing().
- ####################################################
- '''
- #global var
- #是否显示日志信息
- SHOW_LOG = True
- def get_shelve():
- '''open -- file may get suffix added by low-level library'''
- return shelve.open('c:\\test\\hongten.dat', 'c')
- def save(sh):
- '''保存数据'''
- if sh is not None:
- sh['name'] = 'Hongten'
- sh['gender'] = 'M'
- sh['address'] = {'hometown' : 'Shuifu,Yunnan', 'nowadd' : 'Guangzhou,Guangdong'}
- sh['phone'] = ('13423****62', '18998****62')
- sh['age'] = 22
- if SHOW_LOG:
- for item in sh.items():
- print('保存数据[{}] = [{}]'.format(item[0], sh[item[0]]))
- sh.close()
- else:
- print('the shelve object is None!')
- def update(sh):
- '''更新数据'''
- if sh is not None:
- sh['name'] = 'Hongten'
- sh['hoby'] = ('篮球', '羽毛球', '乒乓球', '游泳')
- sh['phone'] = ('13423****62', '18998****62', '020-90909090')
- sh['age'] = 23
- if SHOW_LOG:
- keys = ('name', 'hoby', 'phone', 'age')
- for item in keys:
- print('更新数据[{}] = [{}]'.format(item, sh[item]))
- sh.close()
- else:
- print('the shelve object is None!')
- def delete(sh, key):
- '''删除某个数据'''
- if sh is not None:
- if SHOW_LOG:
- print('删除[{}]的数据'.format(key))
- del sh[key]
- sh.close()
- else:
- print('the shelve object is None!')
- def deleteall(sh):
- '''删除所有数据'''
- if sh is not None:
- for item in sh.items():
- if SHOW_LOG:
- print('删除数据[{}] = [{}]'.format(item[0], sh[item[0]]))
- del sh[item[0]]
- sh.close()
- else:
- print('the shelve object is None!')
- def fetchone(sh, key):
- '''获取某个数据'''
- if sh is not None:
- print('获取[{}]的值:{}'.format(key, sh[key]))
- sh.close()
- else:
- print('the shelve object is None!')
- def fetchall(sh):
- '''遍历所有数据'''
- if sh is not None:
- for item in sh.items():
- print('数据[{}] = [{}]'.format(item[0], sh[item[0]]))
- sh.close()
- else:
- print('the shelve object is None!')
- ###############################################################
- ### 测试 START
- ###############################################################
- def save_test():
- '''保存数据...'''
- print('保存数据...')
- sh = get_shelve()
- save(sh)
- def fetchall_test():
- '''遍历所有数据'''
- print('遍历所有数据...')
- sh = get_shelve()
- fetchall(sh)
- def fetchone_test():
- '''获取某个数据'''
- print('获取某个数据...')
- sh = get_shelve()
- key = 'address'
- fetchone(sh, key)
- def delete_test():
- '''删除某个数据'''
- print('删除某个数据...')
- sh = get_shelve()
- key = 'hoby'
- delete(sh, key)
- def update_test():
- '''更新数据...'''
- print('更新数据...')
- sh = get_shelve()
- update(sh)
- def deleteall_test():
- '''删除所有数据'''
- print('删除所有数据...')
- sh = get_shelve()
- deleteall(sh)
- ###############################################################
- ### 测试 END
- ###############################################################
- def init():
- global SHOW_LOG
- SHOW_LOG = True
- print('SHOW_LOG : {}'.format(SHOW_LOG))
- deleteall_test()
- save_test()
- def main():
- init()
- print('#' * 50)
- fetchall_test()
- print('#' * 50)
- update_test()
- print('#' * 50)
- fetchall_test()
- print('#' * 50)
- fetchone_test()
- print('#' * 50)
- delete_test()
- print('#' * 50)
- fetchall_test()
- print('#' * 50)
- deleteall_test()
- print('#' * 50)
- fetchall_test()
- if __name__ == '__main__':
- main()
python开发_shelve_完整版_博主推荐的更多相关文章
- python开发_zlib_完整版_博主推荐
''' python中的zlib模块提供了压缩和解压缩的方法 实现功能: 读取一个文件的内容,然后把该文件的内容以字符串的形式返回 然后对返回回来的字符串进行压缩处理,然后写入到另一个文件中 同时,也 ...
- python开发_xml.dom_解析XML文档_完整版_博主推荐
在阅读之前,你需要了解一些xml.dom的一些理论知识,在这里你可以对xml.dom有一定的了解,如果你阅读完之后. 下面是我做的demo 运行效果: 解析的XML文件位置:c:\\test\\hon ...
- python开发_configparser_解析.ini配置文件工具_完整版_博主推荐
# # 最近出了一趟差,是从20号去的,今天回来... # 就把最近学习的python内容给大家分享一下... # ''' 在python中,configparser模块提供了操作*.ini配置文件的 ...
- python开发_csv(Comma Separated Values)_逗号分隔值_常用导入导出格式_完整版_博主推荐
## 最近出了一趟差,是从20号去的,今天回来...# 就把最近学习的python内容给大家分享一下...#''' 在python中,CSV(Comma Separated Values),从字面上面 ...
- python开发_gzip_压缩|解压缩gz文件_完整版_博主推荐
''' gzip -- 支持gzip文件 源文件:Lib/gzip.py 这个模块提供了一些简单的接口来对文件进行压缩和解压缩,类似于GNU项目的gzip和gunzip. 数据的压缩源于zlib模块的 ...
- python开发_sqlite3_绝对完整_博主推荐
'''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...
- python开发_copy(浅拷贝|深拷贝)_博主推荐
在python中,有着深拷贝和浅拷贝,即copy模块 下面我们就来聊一下: 运行效果: ================================================== 代码部分: ...
- [转]python开发_shelve_完整版
''' python中的shelve模块,可以提供一些简单的数据操作 他和python中的dbm很相似. 区别如下: 都是以键值对的形式保存数据,不过在shelve模块中, key必须为字符串,而值可 ...
- python开发_tkinter_菜单选项中英文切换_菜单选项不可用操作_博主推荐
我使用的python版本为:3.3.2 如果你对python中tkinter模块的菜单操作不是很了解,你可以看看: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推 ...
随机推荐
- php常用函数——数学函数
php常用函数——数学函数
- 学习Python函数笔记之二(内置函数)
---恢复内容开始--- 1.内置函数:取绝对值函数abs() 2.内置函数:取最大值max(),取最小值min() 3.内置函数:len()是获取序列的长度 4.内置函数:divmod(x,y),返 ...
- php查询mysql返回大量数据结果集导致内存溢出的解决方法
web开发中如果遇到php查询mysql返回大量数据导致内存溢出.或者内存不够用的情况那就需要看下MySQL C API的关联,那么究竟是什么导致php查询mysql返回大量数据时内存不够用情况? 答 ...
- flask基础之安装和使用入门(一)
前言 Flask框架作为一个python极简化的web框架,它不像Django那样的重型,非常适合快速开发一些小型的应用.本人用flask开发了几个项目之后,慢慢研究flask底层的一些原理,开始一步 ...
- xargs -i 和-I 的区别【转】
xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xargs rm -rf * ...
- 343.Integer Break---dp
题目链接:https://leetcode.com/problems/integer-break/description/ 题目大意:给定一个自然数,将其分解,对其分解的数作乘积,找出最大的乘积结果. ...
- 让MySql支持Emoji表情存储
java后台报错,如下. aused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column ...
- php 高并发解决方案(用于抢购) 转载
最近在做一个团购项目,遇到个问题,就是在抢购.秒杀.抽奖等活动时,库存数量有限,但是同时下单人数超过了库存数量,就会导致商品超售问题.那么我们怎么来解决这个问题呢,我的思路如下: sql1:查询商品库 ...
- Codeforces 813B The Golden Age(数学+枚举)
题目大意:如果一个数t=x^a+y^b(a,b都是大于等于0的整数)那就是一个unlucky数字.给你x,y,l,r(2 ≤ x, y ≤ 10^18, 1 ≤ l ≤ r ≤ 10^18),求出l到 ...
- fiddler添加监测请求的 ip地址
本文转载自:http://www.jackness.org/2014/12/26/%E7%BB%99fiddler%E6%B7%BB%E5%8A%A0%E7%9B%91%E6%B5%8B%E8%AF% ...