Python 具有复杂命令的子进程

Python Subprocess with Complex Command

这个问题源于我对UNIX命令的结构和SUBPROCESS模块的了解不足,所以请提前原谅我的幼稚。

我有一个命令,看起来像这样

path/to/openmpi/mpirun -machinefile machine.file -np 256 /path/to/excecutable </dev/null &> output.out &

我知道 MPIrun 的结构是如何工作的,我想我的可执行文件将它的数据写入标准输出,然后我将它重定向到一个名为 output.out 的文件。我在使用 os.sys() 的 python 脚本中使用了此命令,但我想使用子进程,以便当可执行文件完成 运行(在后台)时,python 脚本可以继续做 'things.'

我不知道从哪里开始,所以如果有人有任何提示或可以告诉我格式化子进程命令的正确方法,我将非常感激。所有使用子流程的个人尝试都会导致史诗般的失败。

谢谢!!!

非常简单。

from subprocess import call
call(["path/to/openmpi/mpirun", "-machinefile machine.file -np 256 /path/to/excecutable </dev/null &> output.out &"])

通常,您会将参数作为列表提供给命令,但我认为这应该也能正常工作。如果不是,将每个参数分解为列表的一个新元素。

This 答案更多地说明了这种方法的局限性。