开发者社区> 问答> 正文

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

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

展开
收起
游客6qcs5bpxssri2 2019-09-05 22:48:27 1061 0
2 条回答
写回答
取消 提交回答
  • import sys

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

    2019-11-27 11:16:51
    赞同 展开评论 打赏
  • 如果您正在谈论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模块中定义。

    2019-09-06 21:46:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Python 脚本速查手册 立即下载
Python系列直播第一讲——Python中的一切皆对象 立即下载
From Python Scikit-Learn to Sc 立即下载