使用with自动关闭资源
对文件操作完成后应该立即关闭它们,一种比较古老的方法是 try_finally块 ,但Python提供了一种更为简单的解决方案: with语句 。 with语句的语法为: with 表达式 [as 目标]: 代码块 with语句支持嵌套,支持多个with子句,它们两者可以相互转换。 # 多个with子句 with expr1 as e1 , expr2 as e2 : pass # 嵌套形式 with expr1 as e1 : with expr2 as e2 : pass with语句可以在代码块执行完毕后还原进入代码块时的现场。包含有with语句的代码块的执行过程如下: 计算表达式的值,返回一个上下文管理器对象。 加载上下文管理器对象的__exit__()方法以备后用。 调用上下文管理器对象的__enter__()方法。 如果with语句中设置了目标对象,则将__enter__()方法的返回值赋值给目标对象。 执行with中的代码块。 如果代码正常结束,调用上下文管理器对象的__exit__()方法,其返回值直接忽略。 如果代码执行过程中发生异常,调用上下文管理器对象的__exit__()方法,并将异常类型、值及trackback信息作为参数传递给__exit__()方法。如果__exit__()返回值为false,则异常会被重新抛出;如果其返回值为true,异常被挂起