python 获取 subprocess 中的标准输出流结果

  • Post author:
  • Post category:python


# encoding=UTF-8

import subprocess

class AnomalyResult:
    def GET(self):
        p = subprocess.Popen(['python', 'analysis/xx_analyze.py'], stdout=subprocess.PIPE)
        sub_stdout = p.stdout.read().decode('gbk')
        for i in sub_stdout.split('\n'):
            if i.startswith('##xxx_fail_json:'):
                ps_fail_info = eval(i.strip('##xxx_fail_json: '))
        web.header('Content-Type', 'application/json')
        return json.dumps(ps_fail_info)

“””

[‘python’, ‘analysis/iv_analyze.py’] # 执行的命令是一个列表, 否则可能会报 FileNotFoundError: [WinError 2] 系统找不到指定的文件

shell 不能设置为True

subprocess.PIPE 把标准输出保存到管道中,可以通过 p.stdout.read() 读取出来。 # pring 等打印的信息会随之返回

目的是脚本 iv_analyze.py 的标准输出中获取分析的返回结果,结果再以 json 数据格式返回

“””



版权声明:本文为sky0Lan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。