2015-01-21 3 views
-1

При попытке записать файл, я могу получить ту же самую ошибку, когда какой-либо из следующих условий:причины Python IOError: [Errno 13] Отказано в

  1. Файл существует и отмечен только для чтения ,

  2. У меня нет права на запись для папки и поэтому невозможно создать файл .

  3. Файл уже открыт в другом процессе.

Есть ли способ отделить эти три причины? Если нет, то я бы сказал, что это необычайно плохая конструкция.

+1

Возможно, проверьте права доступа к файлам и сузите возможные случаи. – abstractpaper

ответ

0

Вы получаете то же самое Exception, что и ваша базовая проблема: «Вы не можете этого сделать», но детали содержатся в экземпляре исключения (или в строке на старых питонах), поэтому, если вы справитесь с проблемой как:

try: 
    outfile = open('somename.txt', 'w') 
except IOError, e: 
    print "Not allowed", e 

Вы получите гораздо больше информации. (N.B., если вы используете python 3, вам нужно будет добавить скобки к печати выше).

Это действительно невероятно хороший дизайн - ваша основная проблема заключается в том, что есть проблема - и вы можете узнать больше, если хотите - и вы можете обработать заданный класс проблемы обобщенным образом.

+0

Steve - Вы ошиблись. Вот мой код: –

+0

Вот мой код: попробовать: OUT = открыт ('test.txt', 'ж') out.write ('мусорной') OUT.close() кроме IOError, как экс: print («Не разрешено, потому что% s.»% ex) Если файл test.txt помечен как доступный только для чтения, появляется следующее сообщение об ошибке: Не разрешено, поскольку [Errno 13] Permission denied: 'test. текст'. Если test.txt заблокирован, потому что я открыл его в приложении, таком как Microsoft Word, я получаю точно такое же сообщение об ошибке. Итак, я повторяю свою позицию, что это плохой дизайн. –

+0

Я надеюсь, что кто-то еще сможет добавить к этому обсуждению. –