我有一个脚本,用于创建临时文本文件并在用户关闭窗口后删除。
问题在于,可能会也可能不会创建临时文本文件,具体取决于用户的操作。有时,在用户退出之前可能会删除临时文本文件。有三种可能的情况。
OSError
NameError
我尝试过使用此代码:
try:
os.remove(str(tempfilename))
except OSError or NameError:
pass
但它似乎只能抓住OSError
。我做错了什么?
答案 0 :(得分:3)
try:
os.remove(str(tempfilename))
except (OSError, NameError):
pass
答案 1 :(得分:0)
tempfilename = None
# ...
if tempfilename is not None and os.path.exists(tempfilename):
os.remove(tempfilename)
抓住NameError
并不好,因为它会隐藏代码中的其他拼写错误(例如os.remov(…)
)。
此外,OSError
并不总是意味着该文件不存在。在Windows上,如果文件正在使用中,则会引发异常(http://docs.python.org/2/library/os.html#os.remove)。在这种情况下,您可能希望查看异常,以便您可以了解问题和/或以其他方式处理它。
异常处理程序应该尽可能地缩小,以避免隐藏不相关的错误或错误