In Python 2.x with ‘file-like’ object:
sys.stdout.write(bytes_)
tempfile.TemporaryFile().write(bytes_)
open('filename', 'wb').write(bytes_)
StringIO().write(bytes_)
How to do the same in Python 3?
How to write equivalent of this Python 2.x code:
def write(file_, bytes_):
file_.write(bytes_)
Note: sys.stdout is not always semantically a text stream. It might be beneficial to consider it as a stream of bytes sometimes. For example, make encrypted archive of dir/ on remote machine:
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
There is no point to use Unicode in this case.
It’s a matter of using APIs that operate on bytes, rather than strings.
As the docs explain, you can also
detachthe streams, so they’re binary by default.This accesses the underlying byte buffer.
This is already a byte API.
As you would expect from the ‘b’, this is a byte API.
BytesIOis the byte equivalent toStringIO.EDIT:
writewill Just Work on any binary file-like object. So the general solution is just to find the right API.