2012-01-27 27 views
2

我有一個小的shell腳本在我的python文件中的字符串。
現在我想通過subprocess.call()運行這個腳本,我想知道什麼是最好的方法。如何從python運行內聯shell腳本?

我首先想到的是劇本寫一個StringIO,並指定經stdin=...可惜你不能指定一個StringIO,因爲它沒有一個fileno()方法。

當然,我可以使用stdin=subprocess.PIPE,然後使用subprocess.communicate()寫入它,但我不知道是否有一個更簡單的方法。

回答

4
import subprocess 

script = """ 
for x in 1 2 3 ; do echo $x ; sleep 1 ; done 
""" 

subprocess.call(['sh', '-c', script]) 
+0

謝謝,這解決了我的問題。我之前嘗試過,但顯然我複製和粘貼失敗,因此我的bash腳本有錯誤。 – ThiefMaster 2012-01-27 20:12:13

+0

爲記錄,'subprocess.Popen(['sh'],stdin = subprocess.PIPE).communicate(腳本)'也可以,但是你輸了stdin。 – nosklo 2012-01-30 20:47:17