如何从Python脚本中捕获Python解释器和/或CMD.EXE的输出? -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

游客6qcs5bpxssri2 2019-09-05 22:48:27 130

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

Python Windows
分享到
取消 提交回答
全部回答(2)
  • 游客aasf2nc2ujisi
    2019-11-27 11:16:51

    import sys

    strout = sys.system("cmd命令")

    0 0
  • 游客gsy3rkgcdl27k
    2019-09-06 21:46:06

    如果您正在谈论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模块中定义。

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程