2012-01-27 40 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