如果不用 with 语句,代码如下:
file = open("/tmp/foo.txt")
data = file.read()file.close()
这里有两个问题:
一是可能忘记关闭文件句柄;
二是文件读取数据发生异常,没有进行任何处理。
下面是处理异常的加强版本:
try:
f = open('xxx')except:
print 'fail to open'
exit(-1)try: do somethingexcept: do somethingfinally:
f.close()
虽然这段代码运行良好,但是太冗长了。
这时候就是和一展身手的时候了。除了有更优雅的语法,还有可以很好的处理上下文环境产生的异常。
下面是与版本的代码:
with open("/tmp/foo.txt") as file:
data = file.read()