是否有可能从Python脚本中捕获Python解释器的输出? 是否可以从Python脚本中捕获Windows CMD的输出?
如果您正在谈论python解释器或CMD.exe,它是您脚本的“父”,那么不可能。在每个类似POSIX的系统中(现在你正在运行Windows,看起来可能有一些我不知道的怪癖,YMMV)每个进程都有三个流,标准输入,标准输出和标准错误。Bu默认(在控制台中运行时)会将这些指向控制台,但可以使用管道符号进行重定向:
python script_a.py | python script_b.py 这将脚本a的标准输出流与脚本B的标准输入流联系起来。在此示例中,标准错误仍然发送到控制台。请参阅Wikipedia 上有关标准流的文章。
如果你正在谈论一个子进程,你可以像这样从python启动它(如果你想要双向通信,stdin也是一个选项):
import subprocess
process = subprocess.Popen(["python", "main.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
x = process.stderr.readline()
y = process.stdout.readline()
process.wait() 有关管理进程的信息,请参阅Python 子进程模块。对于通信,process.stdin和process.stdout管道被视为标准文件对象。
对于管道使用,从标准输入读取lassevk建议你做这样的事情:
import sys
x = sys.stderr.readline()
y = sys.stdin.readline()
sys.stdin和sys.stdout 是上面提到的标准文件对象,在sys模块中定义。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。