我经常在python中读到“请求原谅比请求许可更容易”,因此有时认为使用try except
而不是{
我经常有这样的陈述
if (not os.path.isdir(dir)):
os.mkdir(dir).
可能的替代者是
^{pr2}$不过,我想更具体地说,只忽略errno.EEXIST
,因为这是预期会发生的唯一错误,我不知道会发生什么。在
try:
os.mkdir(dir)
except OSError:
if(OSError.errno != errno.EEXIST):
raise
else:
pass.
似乎能搞定。但是如果我需要大量的代码块,这会“污染”我的代码并降低可读性。在Python2.X中有没有一种Python式的方法可以做到这一点?处理此类案件的标准程序是什么?在
编辑:
我刚刚偶然发现了一个可能是最优雅的解决方案:创建
ignored
上下文管理器:这样一来,我只需要创建一次上下文管理器,从那时起,语法就变得非常好和可读了。在
解决方案取自https://www.youtube.com/watch?v=OSGv2VnC0go。在
此示例用于异常
OSError : 17, 'File exists'
把17号换成你的例外号码。您可以在[linkhttps://docs.python.org/2/library/sys.html#sys.exc_info][1]获得更好的解释
如果使用不同的参数多次调用它,请将其放入函数中:
然后调用传递任何参数的函数:
^{pr2}$如果需要更多,还可以允许传递多个errno的选项:
相关问题 更多 >
编程相关推荐