为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2019-12-04 09:46:58
有什么方法可以在Python 2.x中将二进制输出写入sys.stdout吗?在Python 3.x中,您可以仅使用sys.stdout.buffer(或分离stdout等),但是我找不到用于Python 2.5 / 2.6的任何解决方案。编辑,解决方案:来自ChristopheD的链接,如下:import sysif 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)
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您在哪个平台上?


如果您使用的是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更好的替代方法。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 735 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信