微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当出现 FileNotFoundError 异常时,我应该使用 file.close() 关闭文件吗?

如何解决当出现 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 方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。