python with用法举例
2024-10-14 19:20:32
我们知道在操作文件对象的时候可以这么写
with open('a.txt') as f:
'代码块'
上述叫做上下文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__和__exit__方法
使用举例
import shelve class ShelveUtil(object):
"""
使用Shelve存储提取对象
""" def __init__(self, file):
self.file_name = file def save(self, key, value):
"""
存储对象
:param key:
:param value:
:return:
"""
self.file_obj[key] = value def load(self, key):
"""
获得对象
:param key:
:return:
"""
return self.file_obj[key] def load_keys(self):
"""
返回所有key
:return:
"""
return list(self.file_obj.keys()) def del_obj(self, key):
"""
删除object
:return:
"""
del self.file_obj[key] def __enter__(self):
print("enter")
self.file_obj = shelve.open(self.file_name)
return self def __exit__(self, exc_type, exc_val, exc_tb):
print("exit")
self.file_obj.close()
return True if __name__ == '__main__': a = {'a': 1, 'b': 2} with ShelveUtil('a.db') as s:
s.save('a', a)
print(s.load('a'))
输出
enter
{'a': 1, 'b': 2}
exit
最新文章
- Linux从零单排(一):Google Chrome的安装
- NOSQL 数据库 CodernityDB
- 关于HTML面试题汇总
- FingerprintJS - 在浏览器端实现指纹识别
- js实现点击<;li>;标签弹出其索引值
- hibernate一对多注解
- jsp弹出Please check the location and try again!对话框
- ASP.NET中application对象
- 深入浅出 Java Concurrency (3): 原子操作 part 2
- Spring EnableWebMvc vs WebMvcConfigurationSupport
- 初识MongoBD
- <;转>; plsql dev中Dynamic Performance Tables not accessible分析解决
- firefox一搜索就提示是否进入***网站和取消占地方的标题栏
- Structs复习 OGNL
- Redis学习之路(008)- Redis C语言客户端库hiredis文档翻译
- 2016-2017 National Taiwan University World Final Team Selection Contest (Codeforces Gym) 部分题解
- Runtime - Associated Objects (关联对象) 的实现原理
- Spring学习(五)——集成MyBatis
- luogu P1549 棋盘问题(2) 题解
- MVC错误(一)
热门文章
- ORACLE rollup函数
- Educational Codeforces Round 54 E. Vasya and a Tree(树上差分数组)
- myeclipse cannot connect to vm
- Oracle修改数据库的日期
- UVaLive 3704 Cellular Automaton (循环矩阵 + 矩阵快速幂)
- 20155205 信息安全技术第二次实验 Windows口令破解
- How to fix ";FAILURE DURING CONVERSION TO COFF: FILE INVALID OR CORRUPT";
- CentOS FTP服务器系统套件全面讲解
- 去除html页面中GET《 http://localhost:8080/favicon.ico 404 (Not Found)》
- Android多线程操作sqlite(Sqlite解决database locked问题)(2)使用事务处理的效果