python如何监听cmd_如何从Python脚本中捕获Python解释器和/或CMD.EXE的输出?

如果您正在谈论python解释器或CMD.exe,它是您脚本的“父”,那么不可能.在每个类似POSIX的系统中(现在你正在运行Windows,看起来可能有一些我不知道的怪癖,YMMV)每个进程都有三个流,标准输入,标准输出和标准错误. Bu默认(在控制台中运行时)会将这些指向控制台,但可以使用管道符号进行重定向:

python script_a.py | python script_b.py

这将脚本a的标准输出流与脚本B的标准输入流联系起来.在此示例中,标准错误仍然发送到控制台.请参阅维基百科上的standard streams文章.

如果你正在谈论一个子进程,你可以像这样从python启动它(如果你想要双向通信,stdin也是一个选项):

import subprocess

# Of course you can open things other than python here :)

process = subprocess.Popen(["python", "main.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

x = process.stderr.readline()

y = process.stdout.readline()

process.wait()

有关管理流程的信息,请参阅Python subprocess模块.对于通信,process.stdin和process.stdout管道被视为标准file objects.

对于管道使用,从标准输入读取lassevk建议您执行以下操作:

import sys

x = sys.stderr.readline()

y = sys.stdin.readline()

sys.stdin和sys.stdout是标准文件对象,如上所述,在sys模块中定义.您可能还想查看pipes模块.

使用readline()读取数据就像在我的示例中一样,这是获取数据的一种非常天真的方式.如果输出不是面向行或不确定的,你可能想要查看polling,遗憾的是它在Windows中不起作用,但我确信那里有一些替代方案.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值