当前位置: 首页 > article >正文

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

任务

在 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 被设置为二进制模式,


http://www.kler.cn/a/561628.html

相关文章:

  • Jmeter插件下载及安装
  • 第4章 4.4 EF Core数据库迁移 Add-Migration UpDate-Database
  • Hot100 Java之Acm模式 4-7(双指针)
  • 国科大——数据挖掘(0812课程)——课后作业
  • Vue进阶之AI智能助手项目(二)——项目评审与架构设计
  • 游戏引擎学习第122天
  • 轻量级SDK,大能量:EasyRTC重塑嵌入式设备音视频体验
  • 网络安全防御:蓝队重保备战与应急溯源深度解析
  • 芯片公司的AE是干什么的
  • Hadoop 常用命令汇总
  • Linux中常见命令使用
  • Axios 取消请求
  • gotool在线工具集
  • vue passive 修饰符使用场景
  • TDengine 产品组件:taosExplorer
  • 2025 PHP授权系统网站源码
  • 混合架构CPU的能效核心与性能核心:设计哲学与技术实现
  • 【Vscode 使用】集合1
  • AI前端赋能医疗诊断:效率与精准的双重跃升
  • WPF的页面设计和实用功能实现