更正例外:在python中传递警告-可能会打开哪些异常并引发os.remove?
在下面的代码段中,更正例外:在python中传递警告-可能会打开哪些异常并引发os.remove?,python,python-2.7,error-handling,exception-handling,file-handling,Python,Python 2.7,Error Handling,Exception Handling,File Handling,在下面的代码段中,some_path是一个对应于路径(可能是相对路径)的字符串 在这本书中,我们读到: 如果无法打开文件,将引发IOError IOError是我能得到的唯一可能的错误吗(我想到的是UnicodeError,或者OSError等等) 更模糊的是: 如果path是目录,则引发OSError 那么,如果文件正在使用中,或受保护或 更新:如何shutil.move?这似乎引发了另一个shutil.Error(StandardError)-如果我读对了实际上issubclass(IOEr
some_path
是一个对应于路径(可能是相对路径)的字符串
在这本书中,我们读到:
如果无法打开文件,将引发IOError
IOError
是我能得到的唯一可能的错误吗(我想到的是UnicodeError,或者OSError等等)
更模糊的是:
如果path是目录,则引发OSError
那么,如果文件正在使用中,或受保护或
更新:如何
shutil.move
?这似乎引发了另一个shutil.Error(StandardError)
-如果我读对了实际上issubclass(IOError,OSError)-->True
请参阅。这是关于Python3.3中的一个变化,但它也详细解释了以前系统的问题,这就是您所遇到的问题。具体地说,请看文档末尾的。@vaultah:谢谢,我知道-我只是想尽可能具体-所以如果'except IOError'足够的话,我只想that@robert:哇,我不是唯一一个感到困惑的人:)事实上,我正要为该死的WindowsError问一个单独的问题-会让你知道的。无论如何-我在Python2,所以我只想正确地解决上述情况-即避免超级危险的,除了:pass
,而只是错误地传递正确的异常issubclass(IOError,OSError)->True
请参见。这是关于Python3.3中的一个变化,但它也详细解释了以前系统的问题,这就是您所遇到的问题。具体地说,请看文档末尾的。@vaultah:谢谢,我知道-我只是想尽可能具体-所以如果'except IOError'足够的话,我只想that@robert:哇,我不是唯一一个感到困惑的人:)事实上,我正要为该死的WindowsError问一个单独的问题-会让你知道的。无论如何-我在Python2,所以我只想正确地解决上述情况-即避免超级危险的,除了:pass
,而是在中传递正确的异常
def editable(some_path):
"""Safely check whether a file is editable."""
delete = not os.path.exists(some_path)
try:
with open(some_path, 'ab'):
return True
except:
return False
finally:
# If the file didn't exist before, remove the created version
if delete:
try:
os.remove(some_path)
except:
pass