Python with 语句
Oct 19, 2015
Python I/O
我们知道,在程序中打开文件的时候,往往需要考虑一些乱七八糟的异常出现的情况,例如文件不存在啦,没有可读可写的权限啦,亦或是硬盘已满。所以我们经常会用到try/except
语句来捕获异常,
而为了防止文件被破坏,我们还需要finally
语句来保证文件的关闭,如下例子:
这么冗长臃肿的代码,显然不是我们这些强迫症患者所喜爱的,必需要找个方式把他解决掉,那就是with
。with
是python2.5引入的,到了2.6就已经成为默认关键字。加了with
的代码是以下形式:
然后我们还可以通过nested
这样用:
从此以后,妈妈再也不用担心我的文件打开后忘记关闭了。
with
语句引入了一个“上下文管理协议”(Context Management Protocol),对资源访问后发生异常能够正常关闭资源。具体实现是通过定义两个方法__enter__()
以及__exit__()
方法来操作。
这里有一篇参考文献《浅谈Python的with语句》。
19 Oct 2015
Post by: MetaCoder