gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:40:15 25 4
gpt4 key购买 nike

  1. 是否可以从 Python 脚本中捕获 Python 解释器的输出?
  2. 是否可以从 Python 脚本中捕获 Windows CMD 的输出?

如果是这样,我应该查看哪个图书馆(y|ies)?

最佳答案

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

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 中不起作用,但我确信那里有一些替代方案。

关于python - 如何从 Python 脚本捕获 Python 解释器和/或 CMD.EXE 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com