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 во время вызова метода.