如何从python运行可执行文件并传递它的参数?

时间:2014-02-12 06:52:47

标签: python command subprocess

我无法弄清楚如何从python运行可执行文件,然后传递它逐个要求的命令。我在这里找到的所有例子都是在调用可执行文件时直接传递参数。但我的可执行文件需要“用户输入”。它逐个询问价值。

示例:

subprocess.call(grid.exe)
>What grid you want create?: grid.grd
>Is it nice grid?: yes
>Is it really nice grid?: not really
>Grid created

1 个答案:

答案 0 :(得分:3)

您可以使用subprocessPopen.communicate方法:

import subprocess

def create_grid(*commands):
    process = subprocess.Popen(
        ['grid.exe'],
        stdout=subprocess.PIPE,
        stdin=subprocess.PIPE,
        stderr=subprocess.PIPE)

    process.communicate('\n'.join(commands) + '\n')

if __name__ == '__main__':
    create_grid('grid.grd', 'yes', 'not really')

“communic”方法基本上是传入输入,就像你输入它一样。确保用换行符结束每一行输入。

如果您希望grid.exe的输出显示在控制台上,请将create_grid修改为如下所示:

def create_grid(*commands):
    process = subprocess.Popen(
        ['grid.exe'],
        stdin=subprocess.PIPE)

    process.communicate('\n'.join(commands) + '\n')

警告:我还没有完全测试我的解决方案,因此无法确认它们是否适用于所有情况。