簡體   English   中英

如何從 flask 中的行中提取 output

[英]How to Extract the output from line in flask

我有以下代碼:

def sub():
    request_body = request.form['name']
    process = subprocess.Popen("./first.sh" + ' ' + request_body,stdout=PIPE,stderr=subprocess.STDOUT, shell=True)
    isexecuted=False
    for line in iter(process.stdout.readline, b''):
        print (line)
        sys.stdout.flush()
    
    if 'Code Execution Completed' in str(line):
        isexecuted = True
        print ('Process Completed Successfully')
        return ('Ok Json files are generated ')

基本上我想要實現的是,在代碼運行后我想返回一個響應,我正在運行 python 文件的子進程,並且在該 python 文件中有一個打印“代碼執行完成”的字符串。 我試圖把當迭代器發現“代碼執行完成”時它可以返回響應但不幸的是我收到錯誤任何人都可以幫助。

我運行了您的代碼,發現您的可迭代對象中的項目( line )是字節對象。

您需要將字節 object 解碼為字符串,因為最后一行是字符串。 所以更新的if條件是

if 'Code Execution Completed' in line.decode("utf-8"):

或者

if 'Code Execution Completed' in str(line, "utf-8"):

我不會查找特定字符串,而是查看 shell 腳本的返回碼 如果成功,它應該是 0,如果出現問題,它應該是其他值。

當您的呼叫終止時檢查process.returncode的值。 參考

也許你也應該明確地解決替代結果。 如果發生錯誤,請將其記錄下來並確保引起您的注意。

暫無
暫無

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

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