2015-03-19 3 views
0

Я пытаюсь поднять ошибку, когда каталог не существует, прежде чем открывать файлы в этом каталоге. Согласно this response, я должен использовать самый специфический конструктор исключения для моей проблемы, который, я думаю, равен NotADirectoryError. Но запустив код ниже, я получаю NameError: global name 'NotADirectoryError' is not defined. Заранее благодарю за любую помощь!Python raise NotADirectoryError

import os 
if not os.path.isdir(baselineDir): 
    raise NotADirectoryError("No results directory for baseline.") 

И если есть лучший способ сделать это, предложите его, спасибо.

ответ

1

Вы, вероятно, с помощью Python 2, который не определяет NotADirectoryError. Тем не менее, этот is defined в Python 3, точно для цели, для которой вы его пытаетесь использовать.

Если вам нужно использовать Python 2, вам необходимо определить ошибку самостоятельно через класс. Прочитайте документы около user-defined exceptions, чтобы узнать о подклассе класса Exception и, если необходимо, настроить его для своих нужд. Вот очень простой пример:

class NotADirectoryError(Exception): 
    pass 

Это займет строку, переданную ей и распечатать его, так же, как вы хотите.

1

Сообщение об ошибке довольно ясно: NotADirectoryError не определен. Если вы пытаетесь составить свое собственное исключение, @MattDMo указывает вам, как это сделать. Если вы хотите использовать существующее исключение, IOError представляется наиболее подходящим.

0

Исключения, как правило, являются классами. Вам нужно создать класс NotADirectoryError, который является подклассом чего-то, возможно, exceptions.OSError, поскольку в этом случае модуль os будет повышаться.

0

Импорт исключение, если вы знаете, какой модуль он принадлежит:

from my.exception.module import NotADirectoryError 

Если нет, то вы должны определить этот класс:

class NotADirectoryError(Exception): 
    pass