В Python файловые объекты представляются разными типами в зависимости от режима открытия файла и используемых библиотек (например, gzip, bz2). Основные виды:
Текстовые файловые объекты: Открываются в текстовом режиме ('r', 'w', 'a', 'x', с префиксом t).
str).io.TextIOBase и его наследниками, например, io.TextIOWrapper.python
Бинарные файловые объекты: Открываются в бинарном режиме ('rb', 'wb', 'ab', 'xb', с префиксом b).
bytes).io.BytesIOBase и его наследниками, например, io.BufferedReader, io.BufferedWriter.python
"Сырые" файловые объекты: Самый низкий уровень работы с файлом.
buffering=0) или как базовый слой для буферизованных объектов.io.RawIOBase и его наследниками, например, io.FileIO.python
Буферизованные файловые объекты: Обертки над "сырыми" объектами для повышения производительности, минимизируя вызовы системных функций.
io.BufferedReader (для чтения), io.BufferedWriter (для записи), io.BufferedRWPair (для чтения/записи), io.BufferedRandom (для позиционирования).buffering > 0).python
Объекты из библиотеки gzip: Позволяют работать со сжатыми gzip-файлами.
gzip.GzipFile.python
Объекты из библиотеки bz2: Аналогично gzip, но для сжатия по алгоритму BZ2.
bz2.BZ2File.python
Объекты из модулей io, gzip, bz2 часто реализуют протокол файлового объекта, предоставляя стандартные методы (read(), write(), close(), seek(), readline(), readlines(), flush(), tell(), etc.).