Python中with...as...方法

#Python中with…as…方法
在写python程序的时候看到with…as…方法的使用,就深入学习了一下

先说明一个常见问题,文件打开:

1
2
3
4
5
6
7
try:
f = open('xxx')
do something
except:
do something
finally:
f.close()

其实我个人不止一次在网上看到有这么写的了,这个是错的。
首先正确的如下:

1
2
3
4
5
6
7
8
9
10
11
try:
f = open('xxx')
except:
print 'fail to open'
exit(-1)
try:
do something
except:
do something
finally:
f.close()

很麻烦不是么,但正确的方法就是这么写。
我们为什么要写finally,是因为防止程序抛出异常最后不能关闭文件,但是需要关闭文件有一个前提就是文件已经打开了。
在第一段错误代码中,如果异常发生在f=open(‘xxx’)的时候,比如文件不存在,立马就可以知道执行f.close()是没有意义的。改正后的解决方案就是第二段代码。

http://zhoutall.com/archives/325