从python运行shell脚本

时间:2015-08-18 23:18:26

标签: python

我正在尝试使用以下命令从python脚本运行shell脚本:

from subprocess import call
call(['bash run.sh'])

这给了我一个错误,但我可以成功运行其他命令,如:

call(['ls'])

3 个答案:

答案 0 :(得分:11)

你应该分开论点:

call(['bash', 'run.sh'])
call(['ls','-l'])

答案 1 :(得分:4)

from subprocess import call
import shlex
call(shlex.split('bash run.sh'))

您希望正确地标记您的命令参数。 shlex.split()会为你做到这一点。

来源:https://docs.python.org/2/library/subprocess.html#popen-constructor

  

注意shlex.split()在确定正确时非常有用   args的标记化,特别是在复杂情况下:

答案 2 :(得分:3)

当您使用call()调用list时,它希望该列表的每个元素都对应于命令行参数。 在这种情况下,它正在寻找bash run.sh 可执行文件,其中包含空格和所有内容作为单个字符串。

尝试以下方法之一:

call("bash run.sh".split())
call(["bash", "run.sh"])