我試圖通過Python腳本在終端中運行命令。該命令只需要三個參數,在終端中執行時可以完美工作。以下是在命令行中輸入:在Python腳本中運行終端
gpmetis inputfile numberOfSections
無論在inputfile
是從,說桌面時,outputfile
被執行gpmetis
(它被命名爲inputfile.part.numberOfSections
)後傾倒在相同的位置。 gpmetis
只適用於終端,但出於凝聚的目的,我希望在Python腳本的中間使用它來節省時間。 (我以前只是將文件拖入終端和Python文件)
但是,這是我遇到問題......這question和forum提供了有關如何在Python中執行終端有用的提示,但我當我運行python代碼時仍然沒有收到outputfile
。這就像輸出被抑制或我呼叫終端的方式有問題。
我正在呼叫的終端,如:
def Terminal(inputfile, NumParts):
os.system("gpmetis inputfile NumParts")
outputfile = "inputfile.part." + NumParts
return outputfile
而且我不從此得到一個錯誤,但我沒有收到任何輸出文件要麼。我在這裏錯過了什麼,如果你知道你能解釋它嗎?我正在努力學習Python,所以描述我搞砸了什麼將是非常感激。
os
已導入。在我的腳本中「退回」outputfile
的方式可能存在問題,但我的桌面上也看不到outputfile
,這是要處理的第一個問題(一次一個步驟!)
注:我發現這是相關的documentation,但它會幫助我嗎?我無法理解它。
真棒!這工作完美。我應該使用'os.system'還是'subprocess'有區別? – Ason 2012-07-11 23:46:50
是的。你應該總是使用'subprocess' - 'os.system'的文檔甚至建議這樣做。 – kindall 2012-07-12 00:05:06
在Python 2.4中增加了'subprocess'來替換舊的模塊/函數,包括os.system。使用'os.system'進行調用要簡單一些,但要以降低功能爲代價。 'subprocess'允許更好的錯誤處理和更多的選項(比如管道),特別是如果你使用完整的'subprocess.Popen'對象。你可以在這裏閱讀更多關於它的內容:http://docs.python.org/library/subprocess.html – 2012-07-12 00:12:28