On Mar 7, 4:10 pm, Terry Reedy <tjre...@udel.edu> wrote: > On 3/7/2012 5:35 PM, Peter Kleiweg wrote: > > > > > > > > > > > Dave Angel schreef op de 7e dag van de lentemaand van het jaar 2012: > > >> On 03/07/2012 02:41 PM, Peter Kleiweg wrote: > >>> I want to write out some binary data to stdout in Python3. I > >>> thought the way to do this was to call detach on sys.stdout. But > >>> apparently, you can't. Here is a minimal script: > > >>> #!/usr/bin/env python3.1 > >>> import sys > >>> fp = sys.stdout.detach() > > >>> Not yet using fp in any way, this script gives the following error: > > >>> Exception ValueError: 'underlying buffer has been detached' in > > >>> Same in Python 3.1.4 and Python 3.2.2 > > >>> So, what do I do if I want to send binary data to stdout? > > >> sys.stdout.write( some_binary_data ) > > > TypeError: must be str, not bytes > > Right, you can only send binary data to file opened in binary mode. The > default sys.stdout is in text mode. I am pretty sure that remains true > even if stdout is redirected. (You did not mention your OS.) You would > have to open such a file and make sys.stdout point to it. > sys.stdout = my_binary_file. > But why do that? Just open the file and write to it directly without the > above. > > -- > Terry Jan Reedy
Write binary data to sys.stdout.buffer. -Mark -- http://mail.python.org/mailman/listinfo/python-list