The Python2.5's {{{codecs.StreamReaderWriter}}} combines StreamReader and StreamWriter.  The wrapper will read narrow {{{str}}} strings from the underlying stream and decode them to {{{unicode}}} strings.  On writing  {{{unicode}}} data to the wrapper, it will encode them to narrow {{{str}}} strings.

The user of the wrapper should specify character sets by supplying class definitions for the respective stream reader and writer.

Pseudocode:
{{{
#!python
class StreamReaderWriter:
    def __init__(self, stream, class_sr, class_sw):
        self.r = class_sr(stream)
        self.w = class_sw(stream)

    def read(self):
        return self.r.read()

    def write(self, data):
        return self.w.write(data)
}}}

The {{{codecs}}} module defines a function {{{codecs.open(name, encoding)}}} that returns an instance of {{{StreamReaderWriter}}} configured with the supplied encoding.

----
See also: StreamReader, StreamWriter, StreamRecoder.

----
CategoryUnicode