如果我想在python中使用“with”命令打开文件,我如何检测不存在的文件并相应地处理该情况? (例如,如果文件名是由用户输入的,程序需要检查文件名是否存在) 另外,如何使用python“With”语句处理打开文件的失败,例如由于文件损坏导致的权限错误或错误?
答案 0 :(得分:1)
您可以将整个块包装在try
块中并捕获OSError
(Python 3中所有I / O和权限相关错误的父级),或者如果您需要绝对确定它来自open
,而不是open
块之外的with
块中的另一个调用,并且在验证成功后立即with
。
方法1:
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):