2013-07-22 44 views
0

我一直有一行代碼的問題,只是發現了第二個有趣的問題。python腳本中的os.system命令導致錯誤

我有一個命令,然後當放入終端將啓動一個程序,然後將輸出寫入輸出文件。因此,由於某種原因,我一直無法將數據寫入輸出文件(儘管程序啓動了,當我打開python打開終端並運行它時,我可以看到它吐出數據)

出於某種原因它不想將我的數據重定向到輸出文件。我曾嘗試在終端都做腳本,以及(蟒蛇script.py> output.out)

現在我試圖在主命令之前啓動睡眠命令,我從睡夢中

得到一個錯誤
sleep: invalid option -- 'n' 

這裏是代碼

os.system('gnome-terminal -e "sleep 10 ; /usr/local/bin/mpirun -np 4 /home/mike/bin/Linux-ifort_XE_openmpi-1.6_emt64/v2_0_1/Pcrystal </dev/null &> mgo.out &"') 
+0

記得接受你的問題的答案,我注意到你沒有接受你的6個問題的任何答案 – Stephan

+0

Python文檔建議使用子流程模塊來代替。你應該閱讀它。此外,你還有幾個級別的子進程正在啓動('os.system','gnome-terminal'和引用的命令行在'gnome-terminal'內部運行)。乍看之下,我會說分號不是由'gnome-terminal'處理的,''sleep'命令正在看到'-n'選項。 –

+0

我明白了。我已經嘗試過沒有成功。我試過gnome-terminal部分的原因是爲了看看Pcrystal程序是否實際啓動,它是做什麼的。但由於某些原因,它有一個問題重定向輸出,這是我主要關心的問題 –

回答

1

爲了您的原始問題,(不睡覺),你的輸出重定向需要一些工作,嘗試:

/usr/local/bin/mpirun -np 4 /home/mike/bin/Linux-ifort_XE_openmpi-1.6_emt64/v2_0_1/Pcrystal </dev/null > mgo.out 2>&1 & 

會將標準輸出和標準錯誤都指向文件。

+0

這仍然無效。根本沒有生成輸出文件。 –

+0

您是否在命令行上嘗試過上述操作?沒有最後的& –

+0

是的,該命令在命令行上工作,但在python腳本中調用時不起作用。 Pcrystal程序仍然運行並生成所有必要的文件,並且我可以在終端打開時看到它運行(這就是我原來添加gnome-terminal部分的原因)。但它不會將輸出重定向到文件。我想知道是否可能與緩衝區有關,因爲某些原因,不能將輸出快速重定向? –