Чтение нескольких файлов "кроме IOError as exc:" - PullRequest
0 голосов
/ 04 января 2019

Я просматривал через некоторый пример о том, как прочитать несколько файлов данных и встретить эти коды всплывающее окномного:

try:
    ...
except IOError as exc:
    if exc.errno != errno.EISDIR:
        raise

Но я не мог видеть, чтобы кто-нибудь пытался объяснить , поэтому я надеялся, что вы, ребята, поможете мне понять, что это такое?

Вот пример :

import glob
import errno

...

#Create a list of the path of all .txt files
files_list = glob.glob(data_path)

#Iterate through the files in files_list
for file_name in files_list:
    try:
        #something

    except IOError as exc:
        if exc.errno != errno.EISDIR:
            raise

1 Ответ

0 голосов
/ 04 января 2019

Здесь мы рассмотрим эти строки кода одну за другой.

except IOError as exc:

Приведенная выше строка просто перехватывает исключение и получает сообщение об ошибке в переменной exc.Что означает исключение, так это

, когда системная функция возвращает системную ошибку, включая сбои ввода-вывода, такие как «файл не найден» или «диск заполнен» (не для недопустимыхтипы аргументов или другие случайные ошибки). Документы Python 3

Обратите внимание, что в Python 3 это теперь OSError, поскольку IOError объединено с ним.

    if exc.errno != errno.EISDIR:

Эта строка будетпроверьте тип ошибки.Это дается атрибутом errno ошибки.В частности, errno.EISDIR означает, что данная ошибка произошла, потому что «файл» на самом деле был папкой / каталогом.Дополнительную информацию можно найти здесь: D .

        raise

Теперь оператор if прошел и проверил тип ошибки.Он только пропускает сюда raise, если тип ошибки НЕ означает, что указанный путь был каталогом.Это означает, что исключение может означать что угодно, от «Отказано в доступе» и «Недостаточно памяти».

Надеюсь, что выручил вас: D

...