Сообщить об ошибке.

Класс io.IOBase() модуля io в Python

Абстрактный базовый класс для всех классов ввода/вывода

Синтаксис:

import io

fp = io.IOBase()

Описание:

Абстрактный базовый класс io.IOBase() - это класс для всех классов ввода/вывода. Не имеет публичного конструктора.

Класс io.IOBase() предоставляет пустые абстрактные реализации для многих методов, которые выборочно могут переопределять производные классы. Реализация по умолчанию представляют файл, который нельзя прочитать, записать или просмотреть.

Несмотря на то, что IOBase не объявляет методы read() или write() потому что их сигнатуры будут отличаться, реализации и клиенты должны рассматривать эти методы как часть интерфейса. Кроме того, реализации могут вызывать исключения ValueError или UnsupportedOperation при вызове операций, которые они не поддерживают.

Основной тип, используемый для двоичных данных, считываемых из файла или записываемых в него - bytes. Другие байтоподобные объекты также принимаются в качестве аргументов метода. Строки определяются немного по-другому в зависимости от того, является ли поток двоичным (выдающим байты) или текстовым (выдающим символьные строки). Смотрите readline() ниже.

Текстовые классы ввода/вывода работают с данными типа str.

Обратите внимание, что вызов любого метода или даже запроса в закрытом потоке не определен. В этом случае реализации могут поднимать исключения ValueError.

Класс IOBase и его подклассы поддерживает протокол итератора, это означает, что объект IOBase может быть повторен, отдавая строки в поток. Строки определяются немного по-разному в зависимости от того, является ли поток двоичным, дающим байты или текстовым, дающим символьные строки. Смотри readline() ниже.

Класс IOBase также является менеджером контекста и следовательно поддерживает инструкцию with. В примере ниже, файл закрывается после завершения блока операторов в инструкции with, даже если возникает исключение:

with open('spam.txt', 'w') as file:
    file.write('Spam and eggs!')

Атрибуты и методы класса IOBase:

IOBase.close():

Метод IOBase.close() сбрасывает буфер в файл и закрывает поток. Этот метод не действует, если файл уже закрыт. После закрытия файла любая операция с файлом, например чтение или запись вызовет a исключение ValueError.

Для удобства можно вызывать этот метод более одного раза, но только первый вызов будет иметь эффект.

IOBase.closed:

Атрибут IOBase.closed проверяет закрыт ли поток и возвращает True если он закрыт.

IOBase.fileno():

Метод IOBase.fileno() возвращает целое число основной файловый дескриптор потока, если он существует. Возникает исключение OSError, если объект IO не использует дескриптор файла.

IOBase.flush():

Метод IOBase.flush() очищает буфер записи потока, если это применимо. Метод ничего не делает для не блокирующих потоков и потоков доступных только для чтения.

IOBase.isatty():

Метод IOBase.isatty() возвращает True если поток является интерактивным, т.е. подключен к терминалу (tty устройству).

IOBase.readable():

Метод IOBase.readable() возвращает, True если поток может быть прочитан. Если False, метод IOBase.read() поднимет исключение OSError.

IOBase.readline(size=-1, /):

Метод IOBase.readline() прочитает и вернет одну строку из потока. Если указан размер, то будет прочитано не более size байт.

Окончанием строки для двоичных файлов всегда является b''. Для распознавания конечных элементов/символов строки в текстовых файлах может быть использован аргумент newline функции open() .

IOBase.readlines(size=-1, /):

Метод IOBase.readlines() прочитает и вернет список строк из потока. Аргумент size может быть указан для контроля количества прочитанных строк, прочитано будет не более size строк, если общий размер (в байтах или символах) всех строк превышает size.

Обратите внимание, что в классе уже возможно выполнять итерации по объектам файлов, используя for line in file: без вызова file.readlines().

IOBase.seek(offset, whence=SEEK_SET):

Метод IOBase.seek() изменяет позицию потока на заданное смещение в байтах offset. Смещение интерпретируется относительно позиции, обозначенной whence. Аргумент whence имеет значение по умолчанию равное SEEK_SET.

Возможные значения whence:

  • SEEK_SET или 0 - начало потока (по умолчанию). Смещение должно быть нулевым или положительным.
  • SEEK_CUR или 1 - текущая позиция потока. Смещение может быть отрицательным.
  • SEEK_END или 2 - конец потока. Смещение обычно отрицательное.

Метод IOBase.seek() вернет новую абсолютную позицию.

IOBase.seekable():

Метод IOBase.seekable() вернет True если поток поддерживает произвольный доступ. Если False, то методы seek(), tell() и truncate() поднимут исключение OSError.

IOBase.tell():

Метод IOBase.tell() вернет текущую позицию потока.

IOBase.truncate(size=None):

Метод IOBase.truncate() изменит размер потока до заданного размера в байтах или текущей позиции, если размер не указан. Текущая позиция потока не изменяется. Изменение размера может расширить или уменьшить текущий файл. В случае расширения, содержимое новой файловой области зависит от платформы. В большинстве систем дополнительные байты заполнены нулями.

Метод IOBase.truncate() вернет новый размер файла.

IOBase.writable():

Метод IOBase.writable() вернет True если поток поддерживает запись. Если False, то методы write() и truncate() поднимут исключение OSError.

IOBase.writelines(lines):

Метод IOBase.writelines() запишет список строк lines в поток. Разделители строк не добавляются, поэтому обычно для каждой из строк необходимо проверять наличие разделителя строк.

IOBase.__del__( ):

Метод IOBase.__del__() уничтожает объект потока. Класс IOBase обеспечивает реализацию этого метода по умолчанию, которая вызывает метод экземпляра IOBase.close().