import codecs class Queue(object): def __init__(self): self._buffer = "" def write(self, chars): self._buffer += chars def read(self, size=-1): if size<0: s = self._buffer self._buffer = "" return s else: s = self._buffer[:size] self._buffer = self._buffer[size:] return s q = Queue() r = codecs.getreader('utf-32-le')(q) result = r.read() q.write("\x00") x = r.read()