我有一个python脚本,它处理所有传入的请求,并根据输入的类型生成/返回内容。
当我用
运行我的python脚本时print "Content-Type: text/plain\r\n\r\n" #debug mode
生成的html是我期望的。但是,当我评论上面的行时,它会截断输出的一部分。我通过读取文件并使用sys.stdout.write
写入输出来生成html。
代码链接:
driver:http://pastebin.com/VULgJWEx(包含print语句)
处理程序:http://pastebin.com/j87rrQyx(包含写入stdout的writeFileToStdout)
示例:
with Content-type:text -
Content-Length: 105
Content-Type: application/vnd.apple.mpegurl
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:118394
#EXTINF:5,
20110203T230818-01-118403.ts
<小时/> 没有印刷品:
Content-Length: 105
Content-Type: application/vnd.apple.mpegurl
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:118394
#EXTINF:5,
20110203T230818-01-118403 #(ts is missing!!)
最后一个ts被截断。
有人会知道为什么打印造成这种情况? (或者是别的什么?)
答案 0 :(得分:3)
打印或标准输出没有问题(如预期的那样)。
我试图从二进制文件(在Windows上)读取并将其写入stdout。由于'sys'模块代表你打开'stdout'文件对象,通常在文本模式下这样做,事情就变得乱七八糟了。
所以,要解决这个问题:
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
这link很好地解释了这个问题。