Атрибут имени файла OSError недоступен? - PullRequest
5 голосов
/ 13 января 2011

У меня есть следующий код:

except(OSError) as (errno, strerror, filename):
print "OSError [%d]: %s at %s" % (errno, strerror, filename)

Он работает отлично, если не соответствует OSError num.123 (The file name, directory name, or volume label syntax is incorrect).затем я получаю следующую ошибку в строке кода исключения:

ValueError: need more than 2 values to unpack

Она решается без использования атрибута filename.Однако мои требования не позволяют мне использовать этот атрибут.

Есть ли другой способ?

1 Ответ

25 голосов
/ 13 января 2011

Я не видел такого рода обработки исключений, когда вы передаете атрибуты объекта исключения в предложение as.

Обычно вы обрабатываете except ExceptionObject as e и обрабатываете атрибуты, как если бы вы обычно обрабатывали атрибуты объекта.object.

OSError содержит атрибут errno - числовой код ошибки из errno, а атрибут strerror - соответствующую строку и для исключений, которые включают путь к файловой системе (например, chdir () или unlink ()),Экземпляр исключения будет содержать третий атрибут, имя файла, которое является именем файла, переданного функции.

import os
try:
    os.chdir('somenonexistingdir')
except OSError as e:
    print e.errno
    print e.filename
    print e.strerror
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...