python - 当出现 FileNotFoundError 异常时,我应该使用 file.close() 关闭文件吗?
问题描述
我正在尝试在 python 中打开一个文件并在文件不存在时打印一条消息。但是我很困惑是否在发生异常时关闭文件。
try:
file = open(sys.argv[1], "r")
file.close() # should I do this?
except OSError:
print(f"{sys.argv[1]} file not found.")
解决方案
检查文件是否存在的更简单方法:
import os
if not os.path.exists(sys.argv[1]):
print(f"{sys.argv[1]} file not found.")
但要回答您的问题,“file.close()”仅在文件存在并且您成功打开文件时才会发生。不是在发生异常时。
编辑:正如@ekhumoro 所指出的,上面有一个竞争条件(当其他进程访问该文件时)。如果没有其他进程访问该文件,则上述代码有效。
正如@ekhumoro 指出的那样,解决方案是使用您原来的try/except 方法。
推荐阅读
- python - 所有卷积神经网络都可以用于任意数量通道的图像吗?
- grpc - gRPC 客户端超时
- angular - 从 Ionic 4 升级到 Ionic 5 后出现平台浏览器错误
- c# - 或工具 Sat 示例在 C# 表单应用程序中不起作用
- css - Tablepress CSS列格式问题
- python - ValueError:我在抓取网页时找不到表
- matlab - 如何迭代地平均matlab矩阵中的元素连续列以创建一个逐渐变大的中点矩阵?
- spring - 带有 JSON 文件的 Spring Boot MongoDB 数据库播种器
- javascript - 从 bootstrap-datepicker 创建 Vuejs 组件
- testing - 有没有办法从现有的测试套件中创建测试摘要 - 在 Microsoft TFS 中?