New submission from Andreas Poisel <a...@acat.cc>: A string in Python 3 is a sequence of unicode characters, right? The documentation of the bz2 module says:
8<------------------------------------------------------------------ class bz2.BZ2File(filename, mode='r', buffering=0, compresslevel=9) [...] write(data) Write string data to file. Note that due to buffering, close() may be needed before the file on disk reflects the data written. [...] 8<------------------------------------------------------------------ So the documentation wants me to pass a "string data" to the write() method: 8<------------------------------------------------------------------ >>> import bz2 >>> with bz2.BZ2File('test.bz2', mode='w') as cfh: ... cfh.write('Test') ... Traceback (most recent call last): File "<stdin>", line 2, in <module> TypeError: must be bytes or buffer, not str 8<------------------------------------------------------------------ So what write() really wants is a byte array or an encoded string: 8<------------------------------------------------------------------ >>> with bz2.BZ2File('test.bz2', mode='w') as cfh: ... cfh.write(bytes('Test', encoding='iso-8859-1')) ... >>> with bz2.BZ2File('test.bz2', mode='w') as cfh: ... cfh.write('Test'.encode('iso-8859-1')) ... 8<------------------------------------------------------------------ Is this an inaccuracy of the documentation or did I get something wrong? ---------- messages: 100397 nosy: Haudegen severity: normal status: open title: Impreciseness in bz2 module documentation? versions: Python 3.1 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8057> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com