首页 前端知识 Python Cookbook-2.12 将二进制数据发送到 Windows 的标准输出

Python Cookbook-2.12 将二进制数据发送到 Windows 的标准输出

2025-02-26 11:02:26 前端知识 前端哥 681 747 我要收藏

任务

在 Windows平台上,你想把二进制数据(比如一张图片)发送到stdout 中。

解决方案

Python 标准库中,依赖特定平台(Windows)的模块 msvcrt 提供了 setmode 函数,可用来完成这个任务:

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

现在可以给 sys.stdout.write 任何字节或者字符串参数,这些字节和字符串会被不加修改地传递到标准输出中。

讨论

由于 UNIX 并不(或不需要)区分文本和二进制模式,如果打算在 Windows 中读取或者写人二进制数据,比如图片,则必须以二进制模式打开文件。这对于向标准输出(比如,CGI脚本就可能会这么干)写人二进制数据的程序而言是个问题,因为Python通常以文本模式打开 sys.stdout 文件对象。

可以指定命令行选项-u 以二进制模式打开 stdout。比如,如果你知道你的 CGI 脚本运行在 Apache web 服务器中,可以这样写你的脚本的第一行:

#!c:/python23/python.exe -u

这假设了用的是 Python2.3 的标准安装。不过,并不总能控制你的脚本在什么样的命令行中运行。解决方案中给出的是一个可行的选择。setmode函数提供了Windows专用的 msvcrt 模块,以方便用户修改 stdout 固有的文件描述符。通过这个函数,可以在程序内部确认 sys.stdout 被设置为二进制模式,

转载请注明出处或者链接地址:https://www.qianduange.cn//article/21571.html
标签
评论
发布的文章

库制作与原理

2025-02-26 11:02:28

仿12306项目(1)

2025-02-26 11:02:27

2.25 链表 2 新建链表 82

2025-02-26 11:02:26

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!