【问题标题】:Python "With" command detect nonexistent filePython“With”命令检测不存在的文件
【发布时间】:2018-06-27 00:47:23
【问题描述】:

如果我想在 python 中使用“with”命令打开一个文件,我如何检测到一个文件不存在并相应地处理这种情况? (例如,如果文件名是用户输入的,程序需要检查是否存在该文件名的文件) 另外,如何使用python“With”语句处理打开文件失败,例如权限错误或文件损坏导致的错误?

【问题讨论】:

标签: python python-3.x file-io exception-handling with-statement


【解决方案1】:

您可以将整个块包装在 try 块中并捕获 OSError(Python 3 中所有 I/O 和权限相关错误的父级),或者如果您需要绝对确定它来自open,而不是块内的另一个调用,with 块外的open,验证成功后立即with

方法一:

try:
    with open(...) as f:
        ...
except OSError:
    ... handle error ...

或仅从open 捕获:

try:
    f = open(...)
except OSError:
    ... handle error ...
else:
    # When the open succeeds, this is the very next thing executed, so
    # race window for stuff like Ctrl-C interrupting is tiny
    with f:
        ...

如果您只想捕获OSError subclasses 的子集,您可以显式地逐个捕获它们,或者为了统一处理,捕获所有已识别错误的tuple,例如,仅捕获不存在的文件,是一个目录,或者权限相关的错误,同时允许其他错误冒泡,你可以改变:

except OSError:

到:

except (FileNotFoundError, IsADirectoryError, PermissionError):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多