import io fp = io.TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False, write_through=False)
Класс io.TextIOWrapper()
это буферизованный текстовый поток поверх двоичного потока io.BufferedIOBase
. Класс io.TextIOWrapper()
наследует класс io.TextIOBase
.
Аргумент encoding
дает название кодировки, в которую будет декодирован или закодирован поток. По умолчанию равен значению locale.getpreferredencoding(False)
.
Аргумент errors
необязательная строка, которая определяет, как должны обрабатываться ошибки кодирования и декодирования.
Значения errors
:
'strict'
вызывает исключение ValueError
, если есть ошибка кодирования (значение по умолчанию None
, которая имеет тот же эффект),'ignore'
чтобы игнорировать ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.'replace'
приводит к тому, что маркер замены, например '?'
вставляется там, где имеются искаженные данные.'backslashreplace'
приводит к замене искаженных данных обратной escape-последовательностью. 'xmlcharrefreplace'
заменяет искаженные данные на соответствующую ссылку на XML символ'namereplace'
заменяет искаженные данные на \N{...}
escape-последовательности. Также допустимо использование любое другое имя обработчика ошибок, которое было зарегистрировано в codecs.register_error()
.
Аргумент newline
- символ новой строки, который управляет обработкой концов строк. Это может быть None
, ''
, '\n'
, '\r'
, и '\r\n'
.
Аргумент newline
работает следующим образом:
newline
является None
, то включен режим универсальный символ новой строки. Строки на входе могут оканчиваться на '\n'
, '\r'
или '\r\n'
и они преобразуются в '\n'
перед возвратом вызывающей стороне. Если newline=''
, универсальный режим перевода строки включен, но окончания строки возвращаются вызывающей стороне без '\n'
. Если он имеет какие-либо другие допустимые значения, входные строки заканчиваются только данной строкой, а окончание строки возвращается вызывающей стороне без '\n'
.newline
является None
, то любые символы '\n'
, будут переведены в системный разделитель строки системы по умолчанию os.linesep
. Если newline=''
или newline='\n'
, то перевод символов новой строки не выполняется. Если символ новой строки newline
является любым из других допустимых значений, любые '\n'
символы переводятся в newline
.Если line_buffering
равно True
, то подразумевается TextIOBase.flush()
, когда вызов для записи содержит символ перевода строки или возврат каретки.
Если write_through
равно True
, вызовы TextIOBase.write()
гарантированно не буферизуются. То есть любые данные, записанные в объекте io.TextIOWrapper
, немедленно обрабатываются в его базовый двоичный буфер.
Класс io.TextIOWrapper
наследует атрибуты и методы из класса io.TextIOBase
, а так же дополнительно предоставляет или переопределяет несколько атрибутов и методов.
Смотрите пример использования io.TextIOWrapper
.
io.TextIOWrapper
:TextIOWrapper.line_buffering
:Атрибут TextIOWrapper.line_buffering
проверяет включена ли буферизация строки.
TextIOWrapper.write_through
:Атрибут TextIOWrapper.write_through
проверяет, передаются ли немедленно записи в основной двоичный буфер.
TextIOWrapper.reconfigure(*[, encoding] [, errors] [, newline] [, line_buffering] [, write_through])
:Метод TextIOWrapper.reconfigure()
переконфигурирует текстовый поток fp
, используя новые настройки для кодирования encoding
, обработчика ошибок errors
, newline
, line_buffering
и write_through
.
Не указанные параметры сохраняют текущие настройки, за исключением когда указана новая кодировка encoding
, а ошибки errors
указаны не были, то в этом случае errors='strict'
.
Невозможно изменить кодировку encoding
или символ новой строки newline
, если некоторые данные уже были прочитаны из потока. С другой стороны, изменение кодировки после записи возможно.
Этот метод выполняет неявную очистку потока перед установкой новых параметров.
TextIOWrapper.seek(cookie, whence=os.SEEK_SET, /)
:Метод TextIOWrapper.seek()
задает позицию потока. Возвращает новую позицию потока в виде целого числа int
. Поддерживаются четыре операции, заданные следующими комбинациями аргументов:
.seek(0, os.SEEK_SET)
: перемотка к началу потока..seek(cookie, os.SEEK_SET)
: восстановление предыдущей позиции. Аргумент cookie
должен быть числом, возвращаемым TextIOBase.tell()
..seek(0, os.SEEK_END)
: быстрая перемотка к концу потока..seek(0, os.SEEK_CUR)
: оставляет текущую позицию потока неизменной.Любые другие комбинации аргументов недопустимы и могут вызывать исключения.
Значения констант os.SEEK_*
:
os.SEEK_SET
имеет значение 0. os.SEEK_CUR
имеет значение 1. os.SEEK_END
имеет значение 2.