Python Glossary English

все Python 3ioпонятие

io.TextIOBase

абстрактные базы

Абстрактный базовый класс текстовых потоков (StringIO, объект открытого текстового файла); работает со str, а не bytes.

Синтаксис

issubclass(cls, io.TextIOBase)

Класс нужен для проверок типа и для наследования, напрямую его не создают: настоящие текстовые потоки — это StringIO и TextIOWrapper (именно TextIOWrapper возвращает open() в текстовом режиме, им же являются sys.stdin и sys.stdout). Практический смысл различия в том, что в текстовый поток пишется только str: попытка отдать туда bytes даёт TypeError, а бинарные потоки (BytesIO, BufferedReader) принимают наоборот только bytes. Ещё одно следствие — у текстового потока есть encoding и newlines, то есть перекодировка и трансляция переводов строк уже выполнены за вас.

Примеры

import io
print(issubclass(io.StringIO, io.TextIOBase))   # → True
print(issubclass(io.TextIOWrapper, io.TextIOBase), issubclass(io.BytesIO, io.TextIOBase))   # → True False
s = io.StringIO('hello')
print(isinstance(s, io.TextIOBase), s.read())   # → True hello
print(io.StringIO().write(b'x'))   # → TypeError

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности