python 10:with语句
2019-11-10 本文已影响0人
金石明镜
如果我们打开一个文件,去读它的内容。文件打开没有出现异常,但在读文件的过程中出现了异常,该怎么办呢?
这个时候,重要的是尽快关闭文件。因为可能别人也需要使用这个文件,却因为你这里出问题而影响了别人的使用。
像下面这样写,就不能解决问题:
try:
f = open('data')
for line in f:
print(line)
f.close()
except IOError:
log.write('no data read\n')
一旦发生异常,就会跳到except块,close()就没有机会执行到。
一个解决办法是在后面加一个finally语句:
try:
f = open('data')
for line in f:
print(line)
f.close()
except IOError:
log.write('no data read\n')
finally:
f.close()
但还有一个更好的办法,是用with语句:
with open('data') as f:
for line in f:
print(line)
with语句可以确保无论是否发生异常,文件都会在第一时间关闭。