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

如果你说的是python解释器或CMD.exe,它是脚本的“父”那么不可能。在每一个类似POSIX的系统中(现在你运行的是Windows,这似乎有一些我不知道的怪癖,YMMV),每个进程都有三个流,标准输入、标准输出和标准错误。Bu default(在控制台中运行时)它们被定向到控制台,但是可以使用管道符号进行重定向:python script_a.py | python script_b.py

这将脚本a的标准输出流与脚本B的标准输入流相关联。在本例中,标准错误仍会转到控制台。请参阅Wikipedia上关于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()

有关管理进程的信息,请参见Pythonsubprocess模块。对于通信,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中不起作用,但我相信有其他选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值