首页 > 解决方案 > 如何在Flask webapp中拆分子进程的输出行

问题描述

如何拆分脚本的输出并在烧瓶 webapp 中显示?

from flask import Flask, render_template, redirect, url_for, request
import subprocess
import os
import datetime
import time
app = Flask(__name__)

def api():
    cmd = ["/usr/dummy.ksh"]
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, 
    stderr=subprocess.PIPE, universal_newlines=True)                    
    stdout, stderr = p.communicate()
    return stdout
@app.route("/")
def index():
    return render_template('subprocess.html', subprocess_output=api())


if __name__ == "__main__":
   app.run(host='0.0.0.0', debug=True)

“我希望在烧瓶应用程序上逐行查看虚拟脚本的标准输出。但是,我将所有输出都放在一个字符串中。

烧瓶网页中的所需输出:

Script completed step 1
script completed step 2
all done...exiting

烧瓶网页中的当前输出:

Script completed step 1 script completed step 2 all done...exiting

标签: pythonflask

解决方案


  1. 您可以将输出包装在<pre>...</pre>标签中。

  2. 您可以在输出中添加 HTML 换行符,例如:

    return "<br/>".join(stdout.splitlines())


推荐阅读