Главная страница
Навигация по странице:

  • Код ошибки Описание

  • Базовый интерфейс ввода-вывода

  • Атрибут Описание

  • Низкоуровневый ввод-вывод

  • справочник по Python. мм isbn 9785932861578 9 785932 861578


    Скачать 4.21 Mb.
    Названиемм isbn 9785932861578 9 785932 861578
    Анкорсправочник по Python
    Дата08.05.2022
    Размер4.21 Mb.
    Формат файлаpdf
    Имя файлаBizli_Python-Podrobnyy-spravochnik.440222.pdf
    ТипСправочник
    #518195
    страница34 из 82
    1   ...   30   31   32   33   34   35   36   37   ...   82
    См. также
    Описание модуля time (стр. 507).
    Модуль errno
    Модуль errno определяет символические имена для целочисленных кодов ошибок, возвращаемых различными системными вызовами, в частности теми, которые можно найти в модулях os и socket. Обычно эти коды встре- чаются в атрибуте errno исключения OSError или IOError. Для преобразова- ния кода ошибки в строку с текстом сообщения можно использовать функ- цию os.strerror(). А для преобразования целочисленных кодов ошибок в символические имена можно использовать следующий словарь:
    errorcode
    Этот словарь отображает целочисленные коды ошибок в символические имена (такие как ‘EPERM’).
    Коды ошибок в стандарте POSIX
    В следующей таблице перечислены символические имена, определяемые стандартом POSIX для обозначения типичных кодов системных ошибок.
    Коды ошибок, перечисленные здесь, поддерживаются большинством вер- сий UNIX, Macintosh OS-X и Windows. Некоторые версии UNIX могут опре-
    UNIX, Macintosh OS-X и Windows. Некоторые версии UNIX могут опре-
    , Macintosh OS-X и Windows. Некоторые версии UNIX могут опре-
    Macintosh OS-X и Windows. Некоторые версии UNIX могут опре-
    OS-X и Windows. Некоторые версии UNIX могут опре-
    OS-X и Windows. Некоторые версии UNIX могут опре-
    -X и Windows. Некоторые версии UNIX могут опре-
    X и Windows. Некоторые версии UNIX могут опре- и Windows. Некоторые версии UNIX могут опре-
    Windows. Некоторые версии UNIX могут опре-
    . Некоторые версии UNIX могут опре-
    UNIX могут опре- могут опре- делять дополнительные коды ошибок. Они встречаются достаточно редко и потому не были включены в список. Если возникает подобная ошибка, можно обратиться к словарю errorcode, определить с его помощью соответ- ствующее символическое имя и использовать его в своей программе.
    Код ошибки
    Описание
    E2BIG
    Слишком длинный список аргументов.
    EACCES
    В разрешении отказано.
    EADDRINUSE
    Адрес уже используется.
    EADDRNOTAVAIL
    Невозможно назначить запрошенный адрес.
    EAFNOSUPPORT
    Семейство адресов не поддерживается протоколом.
    EAGAIN
    Требуется повторить попытку.
    EALREADY
    Операция уже выполняется.
    EBADF
    Неверный номер файла.

    Модуль errno
    431
    Код ошибки
    Описание
    EBUSY
    У
    стройство или ресурс занят.
    ECHILD
    Нет дочернего процесса.
    ECONNABORTED
    Соединение было разорвано.
    ECONNREFUSED
    Соединение было отвергнуто.
    ECONNRESET
    Соединение было сброшено удаленным узлом.
    EDEADLK
    Возникла ситуация взаимоблокировки при попытке за- хватить ресурс.
    EDEADLOCK
    Возникла ситуация взаимоблокировки при попытке за- хватить файл.
    EDESTADDRREQ
    Не указан адрес назначения.
    EDOM
    Математический аргумент за пределами области определе- ния функции.
    EDQUOT
    Превышена квота.
    EEXIST
    Файл существует.
    EFAULT
    Недопустимый адрес.
    EFBIG
    Файл слишком большой.
    EHOSTDOWN
    Хост не работает.
    EHOSTUNREACH
    Нет доступных маршрутов к хосту.
    EILSEQ
    Недопустимая последовательность байтов.
    EINPROGRESS
    Операция теперь выполняется.
    EINTR
    Системный вызов был прерван.
    EINVAL
    Недопустимый аргумент.
    EIO
    Ошибка ввода-вывода.
    EISCONN
    Сокет уже подключен.
    EISDIR
    Это каталог.
    ELOOP
    Встречено слишком много символических ссылок.
    EMFILE
    Слишком много открытых файлов.
    EMLINK
    Слишком много ссылок.
    EMSGSIZE
    Сообщение слишком длинное.
    ENETDOWN
    Сеть не работает.
    ENETRESET
    Отказ в соединении от сети.
    ENETUNREACH
    Сеть недоступна.
    ENFILE
    Таблица файлов переполнена.
    ENOBUFS
    Недостаточно места в буфере.
    ENODEV
    Нет такого устройства.

    432
    Глава 19. Службы операционной системы
    Код ошибки
    Описание
    ENOENT
    Не т такого файла или каталога.
    ENOEXEC
    Ошибка формата выполняемого файла.
    ENOLCK
    Нет доступных блокировок.
    ENOMEM
    Недостаточно памяти.
    ENOPROTOOPT
    Протокол недоступен.
    ENOSPC
    Недостаточно места на устройстве.
    ENOSYS
    Функция не реализована.
    ENOTCONN
    Сокет не подключен.
    ENOTDIR
    Не каталог.
    ENOTEMPTY
    Непустой каталог.
    ENOTSOCK
    Не является сокетом.
    ENOTTY
    Не является терминалом.
    ENXIO
    Неправильный адрес или устройство.
    EOPNOTSUPP
    Операция не поддерживается для сокетов.
    EPERM
    Операция запрещена.
    EPFNOSUPPORT
    Семейство протоколов не поддерживается.
    EPIPE
    Разрушенный канал.
    EPROTONOSUPPORT
    Протокол не поддерживается.
    EPROTOTYPE
    Недопустимый тип протокола для сокета.
    ERANGE
    Результат математической операции слишком велик.
    EREMOTE
    Попытка обращения к удаленному объекту.
    EROFS
    Файловая система доступна только для чтения.
    ESHUTDOWN
    Невозможно выполнить передачу после отключения со- кета.
    ESOCKTNOSUPPORT
    Тип сокета не поддерживается.
    ESPIPE
    Неверное позиционирование.
    ESRCH
    Нет такого процесса.
    ESTALE
    Устаревший дескриптор файла в файловой системе NFS.
    ETIMEDOUT
    Превышено время ожидания соединения.
    ETOOMANYREFS
    Слишком много ссылок, невозможно отследить.
    EUSERS
    Слишком много пользователей.
    EWOULDBLOCK
    Операция может быть заблокирована.
    EXDEV
    Ссылка между устройствами.
    (продолжение)

    Модуль errno
    433
    Коды ошибок в Windows
    Коды ошибок, перечисленные в следующей таблице, доступны только в Windows.
    Код ошибки
    Описание
    WSAEACCES
    В разрешении отказано.
    WSAEADDRINUSE
    Адрес уже используется.
    WSAEADDRNOTAVAIL
    Невозможно назначить запрошенный адрес.
    WSAEAFNOSUPPORT
    Семейство адресов не поддерживается протоколом.
    WSAEALREADY
    Операция уже выполняется.
    WSAEBADF
    Неверный дескриптор файла.
    WSAECONNABORTED
    Соединение было разорвано.
    WSAECONNREFUSED
    Соединение было отвергнуто.
    WSAECONNRESET
    Соединение было сброшено удаленным узлом.
    WSAEDESTADDRREQ
    Не указан адрес назначения.
    WSAEDISCON
    Удаленный хост не работает.
    WSAEDQUOT
    Превышена квота на дисковое пространство.
    WSAEFAULT
    Недопустимый адрес.
    WSAEHOSTDOWN
    Хост не работает.
    WSAEHOSTUNREACH
    Нет доступных маршрутов к хосту.
    WSAEINPROGRESS
    Операция в процессе выполнения.
    WSAEINTR
    Системный вызов был прерван.
    WSAEINVAL
    Недопустимый аргумент.
    WSAEISCONN
    Сокет уже подключен.
    WSAELOOP
    Невозможно преобразовать имя.
    WSAEMSGSIZE
    Сообщение слишком длинное.
    WSAENAMETOOLONG
    Слишком длинное имя.
    WSAENETDOWN
    Сеть не работает.
    WSAENETRESET
    Отказ в соединении от сети.
    WSAENETUNREACH
    Сеть недоступна.
    WSAENOBUFS
    Недостаточно места в буфере.
    WSAENOPROTOOPT
    Недопустимый параметр протокола.
    WSAENOTCONN
    Сокет не подключен.
    WSAENOTEMPTY
    Невозможно удалить непустой каталог.
    WSAENOTSOCK
    Не является сокетом.

    434
    Глава 19. Службы операционной системы
    Код ошибки
    Описание
    WSAEOPNOTSUPP
    Операция не поддерживается.
    WSAEPFNOSUPPORT
    Семейство протоколов не поддерживается.
    WSAEPROCLIM
    Слишком много процессов.
    WSAEPROTONOSUPPORT
    Протокол не поддерживается.
    WSAEPROTOTYPE
    Недопустимый тип протокола для сокета.
    WSAEREMOTE
    Объект не является локальным.
    WSAESHUTDOWN
    Невозможно выполнить передачу после отключения сокета.
    WSAESOCKTNOSUPPORT
    Тип сокета не поддерживается.
    WSAESTALE
    Дескриптор файла больше недоступен.
    WSAETIMEDOUT
    Превышено время ожидания соединения.
    WSAETOOMANYREFS
    Слишком много ссылок на объект ядра.
    WSAEUSERS
    Слишком много пользователей.
    WSAEWOULDBLOCK
    Ресурс временно не доступен.
    WSANOTINITIALISED
    Интерфейс сокетов не был инициализирован.
    WSASYSNOTREADY
    Сетевая подсистема недоступна.
    WSAVERNOTSUPPORTED
    Версия Winsock.dll не поддерживается.
    Модуль fcntl
    Модуль fcntl реализует управление файлами и операциями ввода-вывода на уровне дескрипторов файлов в системе UNIX. Дескриптор файла можно получить с помощью метода fileno() объекта файла или сокета.
    fcntl(fd, cmd [, arg])
    Выполняет команду cmd над дескриптором открытого файла fd. В аргумен- те cmd передается целочисленный код команды. В необязательном аргумен- те arg можно передать дополнительный параметр команды cmd, который может быть целым числом или строкой. Если в аргументе arg передается целое число, возвращаемым значением функции также будет целое число.
    Если в аргументе arg передается строка, она будет интерпретироваться как структура двоичных данных, а возвращаемое значение будет представлять собой содержимое буфера, преобразованное в объект строки. В этом слу- чае длина аргумента arg и длина возвращаемого значения не должны пре- вышать 1024 байтов, чтобы избежать возможного повреждения данных.
    Ниже приводится перечень доступных команд:
    (продолжение)

    Модуль fcntl
    435
    Команда
    Описание
    F_DUPFD
    Создает дубликат дескриптора файла. В аргументе arg передается минимальное число, которое может быть назначено новому де- скриптору файла. По своему действию эта команда аналогична системному вызову os.dup().
    F_SETFD
    Устанавливает флаг close-on-exec в значение, переданное в аргу- менте arg (0 или 1). Если установить этот флаг, файл будет закрыт системным вызовом exec()
    F_GETFD
    Возвращает состояние флага close-on-exec.
    F_SETFL
    Устанавливает флаг состояния в значение, переданное в аргументе
    arg
    , которое является битовой маской, составленной из следую- щих флагов, объединяемых битовой операцией ИЛИ:
    O_NDELAY
    – Неблокирующий режим ввода-вывода (System V)
    O_APPEND
    – Режим добавления в конец файла (System V)
    O_SYNC
    – Синхронный режим записи (System V)
    FNDELAY
    – Неблокирующий режим ввода-вывода (BSD)
    FAPPEND
    – Режим добавления в конец файла (BSD)
    FASYNC
    – Передает группе процессов сигнал SIGIO, когда операции ввода-вывода станут возможными (BSD).
    F_GETFL
    Возвращает флаг состояния, установленный командой F_SETFL.
    F_GETOWN
    Возвращает идентификатор процесса или группы процессов, в на- стоящее время получающих сигналы SIGURG и SIGIO (BSD).
    F_SETOWN
    Назначает идентификатор процесса или группы процессов, кото- рые будут получать сигналы SIGIO и SIGURG (BSD).
    F_GETLK
    Возвращает структуру flock, используемую в операции блокиро- вок файлов.
    F_SETLK
    Устанавливает блокировку на файл, возвращает -1, если блокиров- ка уже была установлена в другом месте программы или другим процессом.
    F_SETLKW
    Устанавливает блокировку на файл, и если файл уже был где-то заблокирован, ожидает, пока прежняя блокировка не будет снята.
    Если функция fcntl() терпит неудачу, возбуждается исключение IOError.
    Поддержка команд F_GETLK и F_SETLK реализована на основе функции lockf().
    ioctl(fd, op, arg [, mutate_flag])
    Эта функция похожа на функцию fcntl() за исключением того, что коды операций, которые передаются в аргументе op, определены в библиотечном модуле termios. Дополнительный флаг mutate_flag управляет поведением этой функции, когда ей в аргументе arg передается изменяемый объект бу- фера. Дополнительную информацию об этом можно найти в электронной документации. В основном функция ioctl() используется для организации взаимодействий с драйверами устройств и низкоуровневыми компонен-

    436
    Глава 19. Службы операционной системы тами, поэтому особенности ее применения тесно связаны с операционной системой. Она не должна использоваться в программах, для которых пере- носимость имеет большое значение.
    flock(fd, op)
    Выполняет операцию op блокировки над дескриптором fd файла. В аргу- менте op передается битная маска, составленная из значений следующих констант, объявленных в модуле fcntl, объединенных битовой операцией
    ИЛИ:
    Флаг
    Описание
    LOCK_EX
    Исключительный режим работы. Все последующие попытки установить блокировку будут блокироваться, пока блокировка не будет снята.
    LOCK_NB
    Неблокирующий режим работы. Возвращает управление немед- ленно, возбуждая исключение IOError, если блокировка уже была установлена.
    LOCK_SH
    Совместный режим работы. Блокирует любые попытки уста- новить исключительную блокировку (LOCK_EX), но не запрещает установку блокировок совместного режима.
    LOCK_UN
    Снять блокировку. Снимает ранее установленную блокировку.
    При попытке установить неблокирующий режим возбуждается исключение
    IOError
    , если блокировка не может быть установлена немедленно. В некото- рых системах имеется возможность открыть файл и установить блокировку в одной операции, добавив специальный флаг в вызов функции os.open().
    Дополнительные подробности можно найти в описании модуля os.
    lockf(fd, op [, len [, start [, whence]]])
    Устанавливает блокировку на фрагмент файла. В аргументе op передается то же самое значение, что и при вызове функции flock(). В аргументе len пе- пе- редается количество байтов, которые должны блокироваться. В аргументе
    start
    передается начальная позиция блокируемого фрагмента относитель- передается начальная позиция блокируемого фрагмента относитель- начальная позиция блокируемого фрагмента относитель- начальная позиция блокируемого фрагмента относитель- позиция блокируемого фрагмента относитель- позиция блокируемого фрагмента относитель- блокируемого фрагмента относитель- блокируемого фрагмента относитель- фрагмента относитель- фрагмента относитель- относитель- относитель- но значения в аргументе whence. Значение 0 в аргументе whence соответству- ет началу файла, 1 – текущей позиции и 2 – концу файла.
    Пример
    import fcntl
    ёё
    # Открыть файл f = open(“foo”,”w”)
    ёё
    # Установить бит close-on-exec для объекта f файла fcntl.fcntl(f.fileno(), fcntl.F_SETFD, 1)
    ёё
    # Установить исключительную блокировку на файл fcntl.flock(f.fileno(), fcntl.LOCK_EX)
    ёё

    Модуль io
    437
    # Заблокировать первые 8192 байтов в файле (неблокирующий режим)
    try:
    fcntl.lockf(f.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB, 8192, 0, 0)
    except IOError,e:
    print “Невозможно установить блокировку”, e
    Примечания
    • Множество команд и их параметров, доступных функции fcntl(), зави- сит от операционной системы. Для некоторых платформ модуль fcntl объявляет более 100 констант.
    • В других модулях часто можно встретить операции блокировки, реа- лизованные на основе протокола менеджеров контекста. Это далеко не то же самое, что и блокировка файлов. Если программа устанавливает блокировку на файл, она обязательно должна снимать ее.
    • Многие функции из этого модуля могут также применяться к файло- вым дескрипторам сокетов.
    Модуль io
    Модуль io объявляет классы для различных операций ввода-вывода, а так- же встроенную функцию open(), используемую в Python 3. Этот модуль также доступен для использования в Python 2.6.
    Основное назначение модуля io состоит в том, чтобы обеспечить единообра- зие реализации различных форм ввода-вывода. Например, работа с тек- стом несколько отличается от работы с двоичными данными, что обуслов- лено проблемами, связанными с символами перевода строки и кодировкой символов. Для устранения этих различий модуль организован как после- довательность уровней, каждый из которых расширяет функциональные возможности предыдущего.
    Базовый интерфейс ввода-вывода
    Модуль io определяет базовый программный интерфейс операций ввода- вывода, который реализуют все объекты, похожие на файлы. Этот интер- интер- интер- фейс объявлен как базовый класс IOBase. Экземпляр f класса IOBase поддер- живает все основные операции ввода-вывода:
    Атрибут
    Описание
    f.closed
    Флаг, указывающий, был ли закрыт файл.
    f.close()
    Закрывает файл.
    f.fileno()
    Возвращает целое число дескриптора файла.
    f.flush()
    Выталкивает буферы ввода-вывода (если имеются).
    f.isatty()
    Возвращает True, если f представляет терминал.
    f.readable()
    Возвращает True, если f был открыт для чтения.

    438
    Глава 19. Службы операционной системы
    Атрибут
    Описание
    f.readline([limit])
    Читает одну строку из потока. Аргумент limit опреде- ляет максимальное число байтов для чтения.
    f.readlines([limit])
    Читает все строки из объекта f и возвращает их в виде списка. Аргумент limit, если он указан, определяет максимальное число байтов, которое может быть про- читано. Фактическое число прочитанных байтов может оказаться немного больше указанного, так как метод постарается прочитать последнюю уместившуюся стро- ку до конца, чтобы не повредить ее.
    f.seek(offset, [whence])
    Перемещает указатель текущей позиции в новое место относительно местоположения, определяемого аргу- ментом whence. В аргументе offset передается число байтов смещения. Значение 0 в аргументе whence со- ответствует началу файла, 1 – текущей позиции и 2 – концу файла.
    f.seekable()
    Возвращает True, если объект f поддерживает возмож- ность произвольного перемещения указателя текущей позиции.
    f.tell()
    Возвращает текущую позицию указателя.
    f.truncate([size])
    Усекает файл до размера size байтов. Если аргумент
    size
    не указан, размер файла усекается до 0.
    f.writable()
    Возвращает True, если f был открыт для записи.
    f.writelines(lines)
    Записывает последовательность строк в f. Символы завершения строк не добавляются, поэтому они уже должны присутствовать в строках.
    Низкоуровневый ввод-вывод
    На самом низком уровне системы ввода-вывода находятся операции непо- средственного ввода-вывода байтов. Основой этого уровня является класс
    FileIO
    , который обеспечивает достаточно прямолинейный интерфейс к низ- коуровневым системным вызовам, таким как read() и write().
    1   ...   30   31   32   33   34   35   36   37   ...   82


    написать администратору сайта