簡體   English   中英

使用 flask 運行 python 腳本

[英]Using flask to run a python script

我有一個名為 output.py 的腳本

該腳本接受 2 個輸入,文件 A 和文件 B。我可以使用命令 output.py -fileA -fileB 在我的終端上運行它。 該腳本將創建一個新的 JSON 文件並將其保存到目錄中。

我想使用 Flask 運行這個腳本。我在這里定義了一個基本的應用程序,但我不確定如何使用 Flask 運行它

from flask import Flask
import output 
import scripting
app = Flask(__name__)

@app.route('/')

def script():
    return output 
  

if __name__ == '__main__':
   app.run()

有人可以幫幫我嗎,謝謝!

看來您是 Flask 的新手。獲取一些基本教程(網絡上有很多)。

有幾個選項:

  1. 將文件 A 和文件 b 的內容作為 json 有效負載發送。 將 A 和 B 內容從 json 正文中拉出並進行所需的處理並返回正文。
  2. 將文件內容作為 multipart/form-data 發送(您可以發送多個文件)。

注意:這不是工作代碼 - 僅用於說明。

from flask import Flask, request, make_response
app = Flask(__name__)

def build_response(status=False, error="", data={}, total=0, headers=[], contentType="application/json", expose_headers=["X-Total-Count"], retcode=400, additional_data=None):
    resp = {"success": status, "error": error, "data": data}
    resp = make_response(json.dumps(resp))
    for item in headers:
        resp.headers[item] = headers[item]

    resp.headers['Content-Type'] = contentType
    resp.headers.add('Access-Control-Expose-Headers', ','.join(expose_headers))
    resp.status_code = retcode
    return resp


@app.route('/run-script', methods=['POST'])
def run_script():
    # check if the post request has the file part
    try: 
        # Note: THis code is just to illustrate  the concept.
        # Option-1 (content type must be application/json)
        json_dict = request.get_json()
        fileA = json_dict["fileA"]
        fileB = json_dict["fileB"]
 
        # Option-2 (Note: fileA/fileB are objects, put a pdb and check it out)
        fileA = request.files['fileA']
        fileB = request.files['fileA']


        resp = process(fileA, fileB)
        return build_response(status=True, data=resp, retcode=200)
    except Exception as e:
        msg = f"Error - {str(ec)}"
        return build_response(status=False, error=msg, retcode=400)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM