Python代码的行为与在终端中运行时不同

时间:2013-07-18 18:57:03

标签: python subprocess mpi

当我通过终端传递我的mpirun命令时,正常(和预期)结果是一个包含大量数据的输出文件。

然而,当我通过我的python脚本传递代码时,会创建所需的所有输出文件,但它们不包含任何数据。对此有任何全球解释吗?我使用os.system和subprocess以不同的方式尝试了代码。我也尝试在后台运行代码以及运行。我也试过让程序吐出数据而不是将其保存到输出文件,并且所有都给出了相同的结果。

以下是代码:

os.system("mpirun -np 4 /home/mike/bin/Linux-ifort_XE_openmpi-1.6_emt64/v2_0_1/Pcrystal > mgo.out")

2 个答案:

答案 0 :(得分:0)

获得该行为的最简单方法是如果mpirun未成功运行。

例如,如果从命令行运行

not_actually_a_command > myFile.txt

将创建myFile.txt,但它将为空(“找不到命令”消息将打印到stderr,因此不会被“>”捕获。)

尝试使用完全解析的路径来mpirun

您的方法似乎没有任何内在错误。当我做的时候

os.system("echo hello, world >hello.txt")

最终以“hello,world”结尾,所以如果你得到命令运行它应该适合你。

答案 1 :(得分:0)

您应该从提供完整路径开始

os.system("/complete/path/to/mpirun

并打印结果,打印(os.system ...等), 并发布错误,以便我们知道错误。 使用子进程模块时,可能需要“shell = True”