【问题标题】:Python: read output while executing cmd commandsPython:在执行 cmd 命令时读取输出
【发布时间】:2017-12-19 07:07:10
【问题描述】:

我正在使用 python 子进程模块执行 cmd 命令。执行此 cmd 命令(例如,运行一些批处理文件、.exe 文件)正在打开新的命令提示符窗口。如何使用python读取新打开的cmd窗口的输出?

我正在使用以下代码来执行用户提供的命令:

process = subprocess.Popen(command, cwd = working_directory, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

我正在使用 process.communicate() 方法来读取输出。但是,它只允许我读取现有命令提示符窗口的输出。如果用户正在提供触发新命令提示符窗口的命令,那么如何读取该窗口的输出?

【问题讨论】:

  • 到目前为止你尝试了什么?
  • @pankajmishra 我正在使用以下代码来执行使用提供的 cmd 命令。如果用户提供打开新命令窗口的命令,那么我正在寻找从新打开的命令窗口读取输出的解决方案。到目前为止,我只能读取现有 cmd 窗口的输出,而不能读取新打开的窗口。感谢您提前考虑。 :) process = subprocess.Popen(command, cwd = working_directory, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  • 将此代码粘贴到您的问题中
  • 看看我的回答,让我知道什么对你不起作用

标签: python-3.x subprocess


【解决方案1】:

下面的代码打开一个新的命令提示符,在那里执行一个命令并显示该命令窗口的输出

from subprocess import Popen,CREATE_NEW_CONSOLE,PIPE

# /K option tells cmd to run the command and keep the command window from closing. You may use /C instead to close the command window after the 

command='cmd /C help'
proc=Popen(command,creationflags=CREATE_NEW_CONSOLE,stdout=PIPE)
output=proc.communicate()[0]
print ('').join(output)

【讨论】:

    最近更新 更多