我想在Django视图中模拟我的脚本(TensorFlow neaural chatbot模型)的命令行调用,并从控制台获取输出到变量。
当我在服务器的终端中手动操作时:
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''
。
我无法弄清楚我的电话有什么问题。
答案 0 :(得分: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]