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_博主推 ...
随机推荐
- 91.Decode Ways---dp
题目链接:https://leetcode.com/problems/decode-ways/description/ 题目大意:将给出的字符串解码,问有多少种解码方式.解码按照“ABC...Z&qu ...
- LAMP网站架构解释
对于大流量.大并发量的网站系统架构来说,除了硬件上使用高 性能的服务器.负载均衡.CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS).高性能的网页服务器(Web Serv ...
- 在Ubuntu上使用pip安装错误 read timed out 处理方法
在终端输入 pip --default-timeout=1000 install -U pip 也就是修改超时时间.
- sklearn逻辑回归(Logistic Regression)类库总结
class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_inter ...
- docker swarm join 报错
[peter@minion ~]$ docker swarm join --token SWMTKN-1-3mj5po3c7o04le7quhkdhz6pm9b8ziv3qe0u7hx0hrgxsna ...
- 苹果receipt样例
使用[[NSBundle mainBundle] appStoreReceiptURL]方式获取receipt (iOS7及以上获取receipt的方法) 普通付费 "latest_rece ...
- oracle 12C安装问题
1. 先弄好c$ share的问题 2. 测试一下 c$ share 是否成功. 方法是在cmd里打net use \\localhost\c$ 失败会是这样子...: 系统错误53 The ne ...
- 为啥我喜欢在Windows 7环境下做Unity开发?
先说明,以下情况只针对本人哦~ 前阵子我在OSX的最新版本Mavericks下做Unity开发,后来我把MacbookPro卖了,自己组装了个PC搞开发,为啥呢? 1:OSX下 MonoDevelop ...
- HDU 5707 Combine String(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5707 题意: 给你三个字符串 S1, S2, S3, 让你判断 S3 是否恰好由字符串 S1 和 S2 ...
- 洛谷P2047 [NOI2007]社交网络 [图论,最短路计数]
题目传送门 社交网络 题目描述 在社交网络(social network)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系. ...