file = open("test.txt","r")
for line in file.readlines():
print line
file.close()
这样直接打开文件,如果出现异常,如读取过程中文件不存在或异常,则直接出现错误,close方法无法执行,文件无法关闭
with open("test.txt","r") as file:
for line in file.readlines():
print line
用with语句的好处,就是到达语句末尾时,会自动关闭文件,即便出现异常。
with语句实际上是一个非常通用的结构,允许你使用所谓的上下文管理器。上下文管理器是支持两个方法的对象:__enter__和__exit__。
方法__enter__不接受任何参数,在进入with语句时被调用,其返回值被赋给关键字as后面的变量。
方法__exit__接受三个参数:异常类型、异常对象和异常跟踪。它在离开方法时被调用(通过前述参数将引发的异常提供给它)。如果__exit__返回False,将抑制所有的异常。
文件也可用作上下文管理器。它们的方法__enter__返回文件对象本身,而方法__exit__关闭文件
file= open("test.txt","r")
try:
for line in file.readlines():
print line
except:
print "error"
finally:
file.close()
with语句作用效果相当于上面的try-except-finally