2017-02-11 79 views
0

我想在Django視圖中模擬我的腳本(TensorFlow neaural chatbot模型)的命令行調用,並從控制檯獲取輸出到變量。在Django視圖中無法獲得子流程輸出

當我手動執行在我的服務器的終端:

python3 var/www/engine/chatbot/udc_predict.py --model_dir=var/www/engine/chatbot/runs/1486057482/ 

輸出爲好並打印出來。

所以在我的Django的觀點我做的:

 import subprocess 
     answer = subprocess.check_output(['python3', 'var/www/engine/chatbot/udc_predict.py','--model_dir=var/www/engine/chatbot/runs/1486057482/'], shell=True, stderr=subprocess.STDOUT, timeout=None) 
     print('answer', answer) 

而且answer可變印刷成Apache的錯誤日誌b''

我無法弄清楚我的電話有什麼問題。

+1

嘗試通過'標準輸出= subprocess.PIPE'到'subprocess.check_output()'調用 – ZdaR

+1

@ZdaR您的評論轉向我解決 –

回答

0

的答案是使用.communicate()和PIPE:

 from subprocess import Popen, PIPE 
     proc = Popen(
      "python3 var/www/engine/chatbot/udc_predict.py --model_dir=var/www/engine/chatbot/runs/1486057482/", 
      shell=True, 
      stdout=PIPE, stderr=PIPE 
     ) 
     proc.wait()  
     res = proc.communicate() 
     if proc.returncode: 
      print(res[1]) 
     print('result:', res[0]) 
     answer = res[0]