如何从python代码调用shell脚本?


当前回答

我知道这是一个老问题,但我最近偶然发现了这个问题,它最终误导了我,因为Subprocess API自python 3.5以来发生了变化。

执行外部脚本的新方法是使用run函数,它运行args所描述的命令。等待命令完成,然后返回一个CompletedProcess实例。

import subprocess

subprocess.run(['./test.sh'])

其他回答

如上所述,使用子流程模块。

我是这样使用的:

subprocess.call(["notepad"])

请尝试以下代码:

Import Execute 

Execute("zbx_control.sh")

如果您的shell脚本文件没有执行权限,请按照以下方法执行。

import subprocess
subprocess.run(['/bin/bash', './test.sh'])

以防脚本有多个参数

#!/usr/bin/python

import subprocess
output = subprocess.call(["./test.sh","xyz","1234"])
print output

输出将给出状态代码。如果脚本成功运行,它将给出0否则非零整数。

podname=xyz  serial=1234
0

下面是test.sh shell脚本。

#!/bin/bash

podname=$1
serial=$2
echo "podname=$podname  serial=$serial"

如果你想传递一些参数到你的shell脚本,你可以使用shlex.split()方法:

import subprocess
import shlex
subprocess.call(shlex.split('./test.sh param1 param2'))

将test.sh放在同一个文件夹中:

#!/bin/sh
echo $1
echo $2
exit 0

输出:

$ python test.py 
param1
param2