如何从python代码调用shell脚本?
当前回答
以防脚本有多个参数
#!/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"
其他回答
如上所述,使用子流程模块。
我是这样使用的:
subprocess.call(["notepad"])
如果您的shell脚本文件没有执行权限,请按照以下方法执行。
import subprocess
subprocess.run(['/bin/bash', './test.sh'])
有一些方法使用os.popen()(已弃用)或整个子进程模块,但这种方法
import os
os.system(command)
是最简单的方法之一。
请尝试以下代码:
Import Execute
Execute("zbx_control.sh")
子流程模块将帮助您解决这个问题。
显而易见的小例子:
>>> import subprocess
>>> subprocess.call(['sh', './test.sh']) # Thanks @Jim Dennis for suggesting the []
0
>>>
其中test.sh是一个简单的shell脚本,0是这次运行的返回值。
推荐文章
- 数据类vs类型。NamedTuple主要用例
- 如何从macOS完全卸载蟒蛇
- 是否有可能键入提示一个lambda函数?
- 'dict'对象没有has_key属性
- 使用Pandas groupby连接来自几行的字符串
- Pandas:给定列的数据帧行之和
- 如何避免在为Python项目构建Docker映像时重新安装包?
- 如何在Makefile中设置子进程的环境变量
- 如何激活蟒蛇环境
- 省略[…]意思是在一个列表里?
- 为什么我得到“'str'对象没有属性'读取'”当尝试使用' json。载入字符串?
- 不区分大小写的列表排序,没有降低结果?
- 如何让“wc -l”打印没有文件名的行数?
- 有效地测试Linux上的端口是否打开?
- 排序后的语法(key=lambda:…)