Есть ли способ записать двоичный вывод в sys.stdout в Python 2.x? В Python 3.x вы можете просто использовать sys.stdout.buffer(или отсоединить stdout и т.д.), Но я не смог найти решения для Python 2.5/2.6.
EDIT, Решение: От ссылки ChristopheD, ниже:
import sys
if sys.platform == "win32":
import os, msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
EDIT: Я пытаюсь нажать PDF файл (в двоичной форме) на stdout для обслуживания на веб-сервере. Когда я пытаюсь написать файл с помощью sys.stdout.write, он добавляет все виды возвратов каретки в двоичный поток, что приводит к тому, что PDF файл становится поврежденным.
EDIT 2: для этого проекта мне, к сожалению, нужно запускать на Windows Server, так что Linux-решения не работают.
Просто Dummy Example (чтение из файла на диске вместо генерации "на лету", так что мы знаем, что код генерации не является проблемой):
file = open('C:\\test.pdf','rb')
pdfFile = file.read()
sys.stdout.write(pdfFile)