面试题答案
一键面试上下文管理器 with
语句在资源管理方面的优势
- 自动关闭文件:使用普通
open
和close
方法时,如果在文件操作过程中发生异常,close
方法可能不会被执行,导致文件资源未被正确释放。而with
语句会在代码块结束时(无论是正常结束还是因异常结束),自动关闭文件,避免资源泄漏。 - 代码简洁:
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
并给出相应提示。