import io fp = io.RawIOBase()
Базовый класс io.RawIOBase()
предназначен для необработанного двоичного ввода/вывода. Класс io.RawIOBase
наследует класс io.IOBase
. Не имеет публичного конструктора.
Необработанный (Raw) двоичный ввод-вывод обычно обеспечивает низкоуровневый доступ к базовому устройству ОС или API и не пытается инкапсулировать его в высокоуровневые примитивы.
Класс io.RawIOBase
наследует атрибуты и методы из класса io.IOBase
, а так же дополнительно предоставляет несколько методов.
io.RawIOBase
:RawIOBase.read(size=-1)
:Метод RawIOBase.read()
прочитает size
байт из объекта потока и вернет их. Для удобства, если размер не указан или равен -1
, возвращаются все байты до EOF
. В противном случае выполняется только один системный вызов. Может быть возвращено меньше указанного размера size
байтов, если вызов операционной системы возвращает меньше size
байтов .
Если возвращается 0
байтов, а размер не равен 0
, это указывает на конец файла. Если объект находится в неблокирующем режиме и нет доступных байтов, возвращается None.
По умолчанию реализация зависит от методов RawIOBase.readall()
и RawIOBase.readinto()
.
RawIOBase.readall()
:Метод RawIOBase.readall()
прочитает и вернет все байты из потока до EOF
, используя несколько вызовов к поток при необходимости.
RawIOBase.readinto(b)
:Метод RawIOBase.readinto()
считает байты в заранее выделенный записываемый байтоподобный объект b
и вернет количество прочитанных байтов. Например b
может быть bytearray
. Если объект находится в неблокирующем режиме и нет доступных байтов, то вернет None
.
RawIOBase.write(b)
:Метод RawIOBase.write()
запишет данные в байтоподобный объект b
в базовый необработанный поток и вернет количество записанных байтов. Количество записанных байтов может быть меньше, чем длина объекта b
в байтах, в зависимости от особенностей базового raw
потока, и особенно если он находится в неблокирующем режиме. Метод вернет None
, если необработанный поток не блокируется и ни один байт не может быть записан в него. Вызывающий объект может освободить или изменить объект b
после того как метод вернет данные, поэтому реализация должна обращаться только к объекту b
во время вызова метода.