2013-07-18 65 views
0

當我通過終端傳遞我的mpirun命令時,普通(和預期的)結果是一個輸出文件,其中包含一堆數據。Python代碼的行爲與在終端中運行時不同

但是,當我通過我的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

獲得這種行爲的最簡單方法是,如果的mpirun沒有被成功運行。

例如,如果,通過命令行,我運行

not_actually_a_command > myFile.txt 

MYFILE.TXT將被創建,但將是空的(消息被打印到stderr的「未找到命令」,因此將不被「>」抓住)。

嘗試使用完全解決路徑的mpirun

似乎沒有被什麼東西內在的錯誤你的方法。當我做它

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

它結束了「你好,世界」在它,所以如果你得到你的命令運行它應該爲你工作。

+0

我同意你的說法,但是該命令確實有效。如果我將mpirun命令直接複製到終端,它將完美地工作。 –

+0

你是否嘗試在python腳本中使用完全解析的路徑? – BostonJohn

0

你應該提供一個完整的路徑

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

啓動和打印結果,打印(使用os.system ...等), 和發佈錯誤,所以我們知道什麼是錯的。 當使用子進程模塊時,它可能需要一個「shell = True」

+0

我這樣做,它返回0,表明一切都應該工作。 –