【发布时间】:2018-08-07 15:56:00
【问题描述】:
所以我试图在 python 中编写一个简单的包装器来调用 rasa,一个 nlu 工具。我在命令行上写的命令是这样的:
curl -X POST "localhost:5000/parse" -d '{"q":"我在找他妈的墨西哥菜"}' | python -m json.tool
我期望的输出是这样的:
% Total % Received % Xferd 平均速度 时间 时间 时间 当前 下载上传总花费剩余速度 100 545 0 500 100 45 33615 3025 --:--:-- --:--:-- --:--:-- 35714
加上一个json文件的输出。
我用python写了这个程序:
import subprocess
utterance = "Lets say something"
result = subprocess.run(["curl", "-X", "POST", "localhost:5000/parse", "-d", "'{\"q\":\""+utterance+"\"}'", "|", "python", "-m", "json.tool"], stdout=subprocess.PIPE)
print(vars(result))
print(result.stdout.decode('utf-8'))
不幸的是我的输出是这样的,这意味着我实际上并没有从 curl 调用中得到返回:
{'args': ['curl', '-X', 'POST', 'localhost:5000/parse', '-d', '\'{"q":"让我们说点什么"}\ '', '|', 'python', '-m', 'json.tool'], 'returncode': 2, 'stdout': b'', 'stderr': 无}
如果我从命令行调用我的 python 程序,输出如下:
curl: option -m: 期望一个合适的数值参数 curl:尝试'curl --help'或'curl --manual'以获取更多信息 {'args': ['curl', '-X', 'POST', 'localhost:5000/parse', '-d', '\'{"q":"让我们说点什么"}\'', '|', 'python', '-m', 'json.tool'], 'returncode': 2, 'stdout': b'', 'stderr': 无}
我试着到处寻找,但就是无法进行。非常感谢您的帮助。
【问题讨论】:
-
一个想法,你有没有看过 pycurl 或 requests —— 你会写原生代码,更容易实现,更容易阅读,更容易调试。
标签: python curl subprocess rasa-nlu