Необработанные потоки байтов, такие как сокеты, могут быть обернуты io.TextIOWrapper
для обработки кодирования и декодирования строк, что упрощает их использование с текстовыми данными. Класс TextIOWrapper
поддерживает запись и чтение. Аргумент write_through
отключает буферизацию и немедленно сбрасывает все данные, записанные в обертку базового буфера.
Пример использования io.TextIOWrapper()
в качестве потока использует экземпляр io.BytesIO
.
import io # Writing to a buffer output = io.BytesIO() wrapper = io.TextIOWrapper( output, encoding='utf-8', write_through=True, ) wrapper.write('This goes into the buffer. ') wrapper.write('ÁÇÊ') # Retrieve the value written print(output.getvalue()) output.close() # discard buffer memory # Initialize a read buffer input = io.BytesIO( b'Inital value for read buffer with unicode characters ' + 'ÁÇÊ'.encode('utf-8') ) wrapper = io.TextIOWrapper(input, encoding='utf-8') # Read from the buffer print(wrapper.read())