如何正确关闭Python中的文件

在Python中处理文件时,通常在处理完文件后会显式调用close()方法。这在许多情况下都可以正常工作,但对于初学者和来自其他编程语言的开发人员来说,这是一个常见的陷阱。

例如,考虑以下代码。如果在调用close()方法之前抛出异常,文件将保持打开状态。在这种情况下,当程序崩溃时,代码将在调用close()之前停止执行,导致文件保持打开状态。

f = open('filename', 'w')
f.write('Hello world!')
f.close()

解决这个问题的一种方法是将write()调用封装在try语句中。这样,您可以处理任何异常,并使用finally确保文件被关闭。

f = open('filename', 'w')
try:
  f.write('Hello world!')
finally:
  f.close()

Python提供的另一种选择是使用with语句,它将确保在使用文件的代码运行完毕后关闭文件。即使抛出异常,这个规则也适用。

with open('filename', 'w') as f:
  f.write('Hello world!')