2013-10-07 63 views
1

我有叫會將myText變量一文中,我要像這樣運行命令調用:系統參數和管

myText = "This is my text"  
call("echo" + myText + " | mail username -s subj") 

這意味着,我想呼應會將myText文本和傳球郵寄通過管道命令。 什麼是正確的方法來做到這一點?

+1

此代碼是否工作?如果不是,它是做什麼的?你研究了什麼? –

+2

您是否已經從子流程導入調用中執行過?如果是這樣,所有你缺少的是圍繞'myText'用引號括起來,比如'call(「echo'」+ myText +「'| mail username -s subj」)' –

回答

3

你應該看看os命令,比如popen,它允許你創建一個管道來使進程之間相互通信。 看看這個page

from subprocess import Popen, PIPE 
p1 = Popen(['echo', myText], stdout=PIPE) 
p2 = Popen('mail', stdin=p1.stdout) 

這應該工作。

+0

以及這個「mail username -s subj」應該在'p2 = Popen('mail',stdin = p1.stdout)''中寫成,而不是'mail'? – user2234234

+0

這很好,但需要等待p1和p2才能完成流程。 – tdelaney

+2

@ user2234234 - 它會是'p2 = Popen(['mail','username','-s','subj'],stdin = p1.stdout)'。這個例子直接調用郵件,跳過一箇中間shell,所以它需要將每個參數分解成一個列表。 – tdelaney