Python 上下文管理器模块--contextlib】的更多相关文章

在 Python 处理文件的时候我们使用 with 关键词来进行文件的资源关闭,但是并不是只有文件操作才能使用 with 语句.今天就让我们一起学习 Python 中的上下文管理 contextlib. 上下文管理器 上下文,简而言之,就是程式所执行的环境状态,或者说程式运行的情景.既然提及上下文,就不可避免的涉及 Python 中关于上下文的魔法.上下文管理器(context manager)是 Python2.5 开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会…
test 1 上下文管理器,将生成器转化为上下文管理器 import contextlib @contextlib.contextmanager def a(): print(1) yield print(3) with a() as q: print(2) test 2 使用上下文管理器,抽象出异常处理 import contextlib @contextlib.contextmanager def b(): try: yield except Exception as error: prin…
http://blog.csdn.net/pipisorry/article/details/50444736 with语句 with语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用),从 2.6 版本开始缺省可用(参考 What's new in Python 2.6? 中 with 语句相关部分介绍).with 语句适用于对资源进行访问的场合,确保不管使用过程…
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情.例如,你可能想要打开一个文件,然后写入一些内容,最后再关闭文件.这或许就是上下文管理器中一个最经典的示例.事实上,当你利用with语句打开一个文件时,Python替你自动创建了一个上下文管理器. with open("test/test.txt","w") as f_o…
上下文管理器 一直对python中的上下文管理比较迷惑,趁着今天研究SQLAlchemy顺便看了一下,感觉稍微清楚了一点.http://www.cnblogs.com/chenny7/p/4213447.html参考了这篇文章. 所谓上下文,在函数式编程这个具体的场景中来说,可以理解为和闭包有些类似的一种东西.比如在闭包和装饰器那篇文章中我提到过利用自定义一个装饰器来得到一个加强版的函数.为什么它能够得到加强,就是因为在执行这个函数时,解释器会自动执行一些装饰器中定义的操作.而回到上下文这个话题…
对于系统资源的操作,如:文件操作.数据库操作等,我们往往打开文件.连接数据库后忘了将其close掉,这时就可能会引发异常,因此我们常用的做法是: # coding:utf-8 f = open("a.txt", "w+") try: f.write("python") except IOError: print("IO ERR") finally: f.close() 这段代码的确能解决实际问题,但是看起来有些繁琐冗余,因此P…
上下文管理器(Context managers) 上下文管理器允许你在有需要的时候,精确地分配和释放资源. 使用上下文管理器最广泛的案例就是with语句了.想象下你有两个需要结对执行的相关操作,然后还要在它们中间放置一段代码.上下文管理器就是专门让你做这种事情的.举个例子: with open('some_file', 'w') as opened_file: opened_file.write('Hola!') 上面这段代码打开了一个文件,往里面写入了一些数据,然后关闭该文件.如果在往文件写数…
with语句支持在一个叫上下文管理器的对象的控制下执行一系列语句,语法大概如下: with context as var: statements 其中的context必须是个上下文管理器,它实现了两个方法__enter__,__exit__. 1.需求是怎么产生的 在正常的管理各种系统资源(文件.锁定和连接),在涉及到异常时通常是个棘手的问题.异常很可能导致控制流跳过负责释放关键资源的语句. 看一段简单的文件写入代码: filename = 'my_file.txt' f = open(file…
在Python中让自己创建的函数.类.对象支持with语句,就实现了上线文管理协议.我们经常使用with open(file, "a+") as f:这样的语句,无需手动调用f.close()关闭文件.这种用法不仅优雅,而且避免遗忘释放资源,十分方便.所以,当操作某些资源时,需要对资源的获取与释放进行自动操作,就可以用上线文管理器.比如:数据库的连接,查询,关闭处理:socket的连接和断开.本篇主要介绍,如何让自己创建的类.对象.函数等支持with语句,详细请看下文. 1 让对象支持…
什么是上下文管理器? 我们常见的with open操作文件,就是一个上下文管理器.如: with open(file, 'rb') as f: text = f.read() 那上下文管理器具体的定义是什么呢? 上下文管理器:是指在一段代码执行之前执行一段代码,用于一些预处理工作:执行之后再执行一段代码,用于一些清理工作. 比如刚提到的文件操作,打开文件进行读写,读写完之后需要将文件关闭.很明显用到了上下文管理器.主要依靠__enter__.__exit__这两个"魔术方法"实现. _…