MST

星途 面试题库

面试题:Python 中 finally 在资源管理方面的常规应用

在 Python 中,当使用文件资源时,如何利用 try - except - finally 结构来确保文件无论是否发生异常都能正确关闭?请给出代码示例并解释原理。
28.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
try:
    file = open('example.txt', 'r')
    # 在这里进行文件的读取等操作
    content = file.read()
except FileNotFoundError as e:
    print(f"文件未找到: {e}")
finally:
    file.close()

原理解释

  1. try 块:在 try 块中尝试打开文件并进行相关操作。如果在这个过程中没有异常发生,try 块中的代码会正常执行完毕。
  2. except 块:如果在 try 块中发生了 FileNotFoundError(这里以文件未找到为例,实际可捕获其他异常),程序会立即跳转到对应的 except 块中执行代码,打印出文件未找到的错误信息。
  3. finally 块:无论 try 块中是否发生异常,也无论 except 块是否执行,finally 块中的代码都会被执行。在这个例子中,finally 块的作用是确保文件被关闭,从而避免资源泄露。即使在 try 块中因为异常而提前终止,文件依然会在 finally 块中被关闭。在 Python 中,也可以使用 with 语句来更简洁地处理文件资源,它会自动处理文件的关闭,原理上与 try - except - finally 确保文件关闭类似,但代码更简洁优雅。