En Python 2.x podría hacer esto:
import sys, array a = array.array('B', range(100)) a.tofile(sys.stdout)
Sin embargo, ahora obtengo un TypeError: can't write bytes to text stream
. ¿Hay alguna encoding secreta que debería usar?
Una mejor manera:
import sys sys.stdout.buffer.write(b"some binary data")
import os os.write(1, a.tostring())
o, os.write(sys.stdout.fileno(), …)
si es más legible que 1
para usted.
En caso de que desee especificar una encoding en python3, aún puede usar el comando de bytes como se muestra a continuación:
import os os.write(1,bytes('Your string to Stdout','UTF-8'))
donde 1 es el número habitual correspondiente para stdout -> sys.stdout.fileno ()
De lo contrario, si no te importa la encoding solo usa:
import sys sys.stdout.write("Your string to Stdout\n")
Si desea utilizar el os.write sin la encoding, intente utilizar el siguiente:
import os os.write(1,b"Your string to Stdout\n")
Una forma idiomática de hacerlo, que solo está disponible para Python 3, es:
with os.fdopen(sys.stdout.fileno(), "wb", closefd=False) as stdout: stdout.write(b"my bytes object") stdout.flush()
Lo bueno es que utiliza la interfaz de objeto de archivo normal, a la que todo el mundo está acostumbrado en Python.
Observe que estoy configurando closefd=False
para evitar cerrar sys.stdout
al salir del bloque with
. De lo contrario, su progtwig ya no podría imprimir en la salida estándar. Sin embargo, para otro tipo de descriptores de archivos, es posible que desee omitir esa parte.