我正在尝试使用以下命令从python脚本运行shell脚本:
from subprocess import call
call(['bash run.sh'])
这给了我一个错误,但我可以成功运行其他命令,如:
call(['ls'])
答案 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"])