MST

星途 面试题库

面试题:Python数值运算中上下文管理器的基础应用

请简述在Python数值运算场景下,上下文管理器 `with` 语句相较于普通的文件操作方式(如直接调用 `open` 和 `close` 方法),在资源管理方面有哪些优势?并举例说明如何使用上下文管理器来安全地进行数值文件的读取与简单运算(假设文件每行存储一个数值)。
45.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

上下文管理器 with 语句在资源管理方面的优势

  1. 自动关闭文件:使用普通 openclose 方法时,如果在文件操作过程中发生异常,close 方法可能不会被执行,导致文件资源未被正确释放。而 with 语句会在代码块结束时(无论是正常结束还是因异常结束),自动关闭文件,避免资源泄漏。
  2. 代码简洁with 语句通过将文件打开和关闭操作封装起来,使代码结构更清晰、简洁,减少了手动编写 close 语句的冗余代码。

使用上下文管理器安全地进行数值文件读取与简单运算示例

假设文件 numbers.txt 每行存储一个数值,以下是代码示例:

try:
    total = 0
    with open('numbers.txt', 'r') as file:
        for line in file:
            try:
                num = float(line.strip())
                total += num
            except ValueError:
                print(f"Invalid number: {line.strip()}")
    print(f"The sum of valid numbers is: {total}")
except FileNotFoundError:
    print("The file was not found.")

在上述代码中,with open('numbers.txt', 'r') as file 使用上下文管理器打开文件。在 with 代码块内,可以安全地对文件进行逐行读取,并尝试将每行内容转换为浮点数进行累加运算。如果遇到无效数值,捕获 ValueError 并进行提示。同时,如果文件不存在,捕获 FileNotFoundError 并给出相应提示。