微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 2.x-将二进制输出写入stdout吗?

如何解决Python 2.x-将二进制输出写入stdout吗?

您在哪个平台上?

如果您使用的是Windows,则可以尝试使用此食谱(无论如何,该链接建议它仅适用于Windows)。

if sys.platform == "win32":
    import os, msvcrt
    msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)

网上有一些参考资料,Python 3.1将/应该有一个功能可以sys.stdout以二进制模式重新打开,但是我真的不知道是否有比Python 2.x更好的替代方法

解决方法

有什么方法可以在Python 2.x中将二进制输出写入sys.stdout吗?在Python
3.x中,您只能使用sys.stdout.buffer(或分离stdout等),但是我还没有找到针对Python 2.5 / 2.6的任何解决方案。

编辑, 解决方案 :来自ChristopheD的链接,如下:

import sys

if sys.platform == "win32":
    import os,msvcrt
    msvcrt.setmode(sys.stdout.fileno(),os.O_BINARY)

编辑:我正在尝试将PDF文件(二进制格式)推送到stdout,以便在Web服务器上提供服务。当我尝试使用sys.stdout.write写入文件时,它将所有回车符添加到二进制流中,导致PDF损坏。

编辑2:不幸的是,对于此项目,我需要在Windows Server上运行,因此Linux解决方案不见了。

简单的虚拟示例(从磁盘上的文件读取,而不是即时生成,只是我们知道生成代码不是问题):

file = open('C:\\test.pdf','rb') 
pdfFile = file.read() 
sys.stdout.write(pdfFile)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。