python3でバイナリデータを標準出力に出力する
python3でcgiを書いていて、画像データを標準出力に出力しようとしてハマったのでメモ
結論
1. sys.stdout.buffer.write を使う
2. 先に print を使っていたなら sys.stdout.buffer.write の直前に sys.stdout.flush を呼ぶ
サンプルコード
print("Content-Type: image/png") print("Content-Disposition: attachment; filename=hoge.png") print("") sys.stdout.flush() # printとwriteの間に呼ぶ sys.stdout.buffer.write(data)