【问题标题】:Opening an .exe and passing commands to it via Python subprocess?打开 .exe 并通过 Python 子进程向其传递命令?
【发布时间】:2014-07-14 15:53:18
【问题描述】:

所以我打开了我的 .exe 程序,但我想从我的 python 脚本向它传递字符串。 我像这样打开exe

import subprocess
p = subprocess.Popen("E:\Work\my.exe", shell=True)
#let user fill in some tables
p.communicate("userInfo")

我想将一个字符串传递给这个程序,同时让它在后台运行而不接管任何想法?

【问题讨论】:

  • Popen(['/bin/sh', '-c', args[0], args[1], ...]) Pyhton Doc 或 shell=true 类似 Popen( 'E:\Work\my.exe" + param1, shell=True)

标签: python multithreading subprocess


【解决方案1】:

来自Python documentation for Using the subprocess module

您不需要 shell=True 来运行批处理文件,也不需要运行 基于控制台的可执行文件。

来自Python documentation for Popen Objects

注意,如果你想向进程的标准输入发送数据,你需要 使用 stdin=PIPE 创建 Popen 对象。同样,得到任何东西 除了结果元组中的 None 之外,您需要给出 stdout=PIPE 和/或 stderr=PIPE。

代码示例:

from subprocess import Popen, PIPE

p = Popen(r"E:\Work\my.exe", stdin=PIPE)
p.communicate("userInfo")

【讨论】: