Сообщить об ошибке.

Класс io.TextIOWrapper модуля io в Python

Буферизованный текстовый поток поверх двоичного потока

Синтаксис:

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.