如果不用“with”,那么Python会在何时关闭文件呢?答案是:视情况而定。
Python程序员最初学到的东西里有一点就是可以通过迭代法很容易地遍历一个打开文件的全文:
f = open('/etc/passwd')
for line in f:
print(line)
注意上面的代码具有可行性,因为我们的文件对象“f”是一个迭代器。换句话说,“f“ 知道在一个循环或者任何其他的迭代上下文中做什么,比如像列表解析。
我的Python课堂上的大多数学生都具有其他编程语言背景,在使用以前
实际上,Python 提供了 with 语句来管理资源关闭。比如可以把打开的文件放在 with 语句中,这样 with 语句就会帮我们自动关闭文件。
with 语句的语法格式如下:
with context expression [as target(s)]:
with 代码块
在上面的语法格式中,context_expression 用于创建可自动关闭的资源。
例如,程序使用 with 语句来读取文件:
import codecs
# 使用with语句打开文件,该语句会负责关闭文件