要在Python中显示命令输出,有两种常用方法:check_output():它使用参数运行命令并返回其输出。(official documentation)
subprocess.communicate():与进程交互:向stdin发送数据。从stdout和stderr读取数据,直到到达文件末尾。(official documentation)
我可以使用Ubuntu机器中的Python 3.5使用这两种方法查看shell文件输出。
app.py:import subprocess
from subprocess import Popen, PIPE
from subprocess import check_output
from flask import Flask
def get_shell_script_output_using_communicate():
session = subprocess.Popen(['./some.sh'], stdout=PIPE, stderr=PIPE)
stdout, stderr = session.communicate()
if stderr:
raise Exception("Error "+str(stderr))
return stdout.decode('utf-8')
def get_shell_script_output_using_check_output():
stdout = check_output(['./some.sh']).decode('utf-8')
return stdout
app = Flask(__name__)
@app.route('/',methods=['GET',])
def home():
return '
'+get_shell_script_output_using_check_output()+''
app.run(debug=True)
some.sh:#!/bin/bash
echo "hi from shell script"
echo "hello from shell script"
输出屏幕截图: