我无法弄清楚如何从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
答案 0 :(得分:3)
您可以使用subprocess
和Popen.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')
警告:我还没有完全测试我的解决方案,因此无法确认它们是否适用于所有情况。