python将数字以二进制输出_在python3中从CGI输出二进制数据

这个问题与this one有关。我在python2中从CGI脚本打印原始二进制数据时没有问题,例如:#!/usr/bin/env python2

import os

if __name__ == '__main__':

with open(os.path.abspath('test.png'), 'rb') as f:

print "Content-Type: image/png\n"

print f.read()

以下是相关的响应标题:

^{pr2}$

结果就像预期的那样被解释成一个图像。但是,如果我尝试将其转换为Python 3:#!/usr/bin/env python

import os

import sys

if __name__ == '__main__':

with open(os.path.abspath('test.png'), 'rb') as f:

print("Content-Type: image/png\n")

sys.stdout.buffer.write(f.read())

不返回任何内容,以下是标题:> GET /cgi-bin/plot_string3.py HTTP/1.1

> User-Agent: curl/7.32.0

> Host: 0.0.0.0:8888

> Accept: */*

>

* HTTP 1.0, assume close after body

< HTTP/1.0 200 Script output follows

< Server: SimpleHTTP/0.6 Python/3.3.2

< Date: Fri, 13 Sep 2013 16:22:13 GMT

< �PNG

<

我不能再做print(f.read()),因为这样会打印出b'\x89PNG\r\n\x1a\n\x00...之类的内容。我链接的问题给出了一个解决方案,但显然在这种环境下不起作用。在

有什么想法?在This also means print is no good for CGI any more.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值