How to write bytes to a file in Python 3 without knowing the encoding?

It’s a matter of using APIs that operate on bytes, rather than strings.

sys.stdout.buffer.write(bytes_)

As the docs explain, you can also detach the streams, so they’re binary by default.

This accesses the underlying byte buffer.

tempfile.TemporaryFile().write(bytes_)

This is already a byte API.

open('filename', 'wb').write(bytes_)

As you would expect from the ‘b’, this is a byte API.

from io import BytesIO
BytesIO().write(bytes_)

BytesIO is the byte equivalent to StringIO.

EDIT: write will Just Work on any binary file-like object. So the general solution is just to find the right API.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)