作用
例如,前面在介绍文件操作时,一直强调打开的文件最后一定要关闭(f.close()),否则会程序的运行造成意想不到的隐患。但是,即便使用 close() 做好了关闭文件的操作,如果在打开文件或文件操作过程中抛出了异常,还是无法及时关闭文件,即便最终没有关闭文件,修改文件内容的操作也能成功。
为了更好地避免此类问题,不同的编程语言都引入了不同的机制。在 Python 中,对应的解决方式是使用 with as 语句操作上下文管理器(context manager),它能够帮助我们自动分配并且释放资源。
用法
with 表达式 [as target]:
代码块
用 [] 括起来的部分可以使用,也可以省略。其中,target 参数用于指定一个变量。with as 语句中的代码块如果不想执行任何语句,可以直接使用 pass 语句代替。
举例
假设有一个 a.txt 文件,其存储内容如下:
C语言中文网
http://c.biancheng.net
在和 a.txt 同级目录下,创建一个 .py 文件,并编写如下代码:
with open(‘a.txt’, ‘a’) as f:
f.write("\nPython教程")
运行结果为:
C语言中文网
http://c.biancheng.net
Python教程
可以看到,通过使用 with as 语句,即便最终没有关闭文件,修改文件内容的操作也能成功。