更正例外:在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