System.Environment.ExitCode
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
Вот мое текущее решение, но я немного презираю использование нетривиального кода в блоке исключений:
try:
f.extractall()
except OSError, e:
# http://bugs.python.org/issue6609
if sys.platform.startswith('win'):
if isinstance(e, WindowsError) and e.winerror == 267:
raise InvalidFile, ('uses Windows special name (%s)' % e)
raise
Если вам нужно перехватить исключение с именем, которое может не всегда существовать, создайте его:
if not getattr(__builtins__, "WindowsError", None):
class WindowsError(OSError): pass
try:
do()
except WindowsError, e:
print "error"
Если вы работаете в Windows, вы будете использовать настоящий класс WindowsError и перехватить исключение. В противном случае вы создадите класс WindowsError, который никогда не будет вызван,