当我通过终端传递我的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")
答案 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”