我有一个纯粹由命令提示符/ shell驱动的可执行文件xyz.exe
。它以交互方式接收输入并显示输出。假设xyz.exe
有点像Windows上典型的python shell。它等待用户输入>>>
的内容,从而继续处理输入。
现在,我想控制这个xyz.exe
进程并将其完全带入我当前的python控制台/ shell的上下文中。我怎样才能做到这一点?
我提到Assign output of os.system to a variable and prevent it from being displayed on the screen并尝试使用子进程执行相同操作:
import subprocess
cmd = r"\\sharedLocation\path\xyz.exe"
proc = subprocess.Popen([cmd], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print("program output:", out)
但这只会在xyz.exe
启动时获得xyz.exe
的即时(第一次)输出,更像是欢迎消息。但是在第一次输出/欢迎消息之后,">>>"
实际上等待用户输入wait()
...我希望我当前执行python脚本到xyz.exe
并引入整个我的脚本输出范围内的{{1}}上下文。有没有办法在python中执行此操作?
答案 0 :(得分:1)
实际上,无论你输入的是什么,都会被输入xyz.exe
但是你不会看到任何进一步的消息,因为stdout=subprocess.PIPE
已被传递给Popen的构造函数,这将导致命令的输出不被输出;相反,它被送到类似文件的proc.stdout
。由print("program output:", out)
打印欢迎信息。要使xyz.exe
的输出显示在控制台中,请从Popen构造函数参数中删除stdout=subprocess.PIPE,
。然后print("program output:", out)
是不必要的。