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