如何从python代码调用shell脚本?
如何从Python代码调用shell脚本?
subprocess模块将帮助你。
明显微不足道的例子:
>>> import subprocess >>> subprocess.call(['./test.sh']) # Thanks @Jim Dennis for suggesting the [] 0 >>> 
 其中test.sh是一个简单的shell脚本, 0是这个运行的返回值。 
 有一些方法使用os.popen() (不推荐)或整个subprocess os.popen()模块,但这种方法 
 import sys, os os.system(command) 
是最容易的之一。
如果你想传递一些参数到你的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 
使用上述的subprocess模块。
我这样使用它:
 subprocess.call(["notepad"]) 
 import os import sys 
假设test.sh是你想要执行的shell脚本
 os.system("sh test.sh") 
我正在运行python 3.5和subprocess.call(['./test.sh'])不适合我。
我给你三个解决scheme取决于你想要做的输出。
1 – 调用脚本。 您将在terminal中看到输出。 输出是一个数字。
 import subprocess output = subprocess.call(['test.sh']) 
2 – 调用并转储执行和错误到string。 除非打印(stdout),否则在terminal中不会看到执行。 Shell = True,因为Popen中的参数对我不起作用。
 import subprocess from subprocess import Popen, PIPE session = subprocess.Popen(['test.sh'], stdout=PIPE, stderr=PIPE) stdout, stderr = session.communicate() if stderr: raise Exception("Error "+str(stderr)) 
3 – 调用脚本并在temp_file中转储temp.txt的echo命令
 import subprocess temp_file = open("temp.txt",'w') subprocess.call([executable], stdout=temp_file) with open("temp.txt",'r') as file: output = file.read() print(output) 
不要忘记看看docsubprocess
subprocess是好的,但有些人可能更喜欢scriptine 。 Scriptine有更多的高层次的方法,如shell.call(args) , path.rename(new_name)和path.move(src,dst) 。 Scriptine基于subprocess和其他。
圣经的两个缺点:
- 即使足够,当前文档级别也会更全面。
 - 与subprocess不同的是,默认情况下目前还没有安装scriptine软件包。
 
subprocess模块是启动subprocess的好模块。 你可以用它来调用shell命令:
 subprocess.call(["ls","-l"]); #basic syntax #subprocess.call(args, *) 
你可以在这里看到它的文档。
如果你的脚本是用.sh文件或长string写的,那么你可以使用os.system模块。 这很简单,很容易调用:
 import os os.system("your command here") # or os.system('sh file.sh') 
这个命令将运行脚本一次,完成,并阻止,直到它退出。
请尝试以下代码:
 Import Execute Execute("zbx_control.sh")