¿Hay alguna manera de escribir salida binaria a sys.stdout en Python 2.x? En Python 3.x, puede simplemente usar sys.stdout.buffer (o separar stdout, etc ...), pero no he podido encontrar ninguna solución para Python 2.5/2.6.Python 2.x - ¿Escribir salida binaria a stdout?
EDITAR, Solución: De enlace de ChristopheD, a continuación:
import sys
if sys.platform == "win32":
import os, msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
EDIT: Estoy tratando de empujar un archivo PDF (en forma binaria) a la salida estándar para servir en un servidor web. Cuando intento escribir el archivo usando sys.stdout.write, agrega todo tipo de retornos de carro a la secuencia binaria que hace que el PDF se vuelva corrupto.
EDIT 2: Para este proyecto, tengo que ejecutar en un servidor de Windows, desafortunadamente, para que las soluciones Linux estén fuera.
Simplemente maniquí Ejemplo (lectura de un archivo en el disco, en lugar de generar sobre la marcha, por lo que sólo saben que el código de generación no es la cuestión):
file = open('C:\\test.pdf','rb')
pdfFile = file.read()
sys.stdout.write(pdfFile)
Cuando hiciste 'sys.stdout.write()' ¿qué no funcionó? –
Consulte la explicación anterior, pero el problema es básicamente que python agrega retornos de carro cuando intenta convertir la secuencia binaria en una cadena para escritura. – Eavesdown
¿'sys.stdout = os.fdopen (1," wb ")' funciona para que usted elimine las conversiones de modo de texto? (Todavía necesitará usar sys.stdout.write si no desea que las NL se impriman). (Http://docs.python.org/library/os.html#os.fdopen) –