在Python中进行终端调用的方法,捕获返回的内容?



我现在正在做一个项目,我将字符串传递到这个 NLP API 中,它返回字符串情感分析的 JSON 对象。 我承认我是Python新手:

http://text-processing.com/docs/sentiment.html

通过命令行调用 API 的文档很简单。 当我打开终端并运行命令时,它工作正常。

curl -d "text=great" http://text-processing.com/api/sentiment/

在终端上运行该命令将产生:

{"probability": {"neg": 0.59309571705919506, "neutral": 0.5403849950008478, "pos": 0.40690428294080488}, "label": "neutral"}

我正在尝试在 Python 中找出一种方法来使用相同的命令进行终端调用,并捕获 JSON 对象、对其进行解码并在我的代码中使用它。

到目前为止,我发现使用以下代码在 Python 中有效:

import os
os.system('curl -d "text=great" http://text-processing.com/api/sentiment/')

但是,当我在 Python 文件中运行此行时,它会打印出 JSON 对象。 如何将输出保存到变量,然后转储字符串并在代码中使用 JSON 结果?

当我尝试时:

import os
sentiment = os.system('curl -d "text=great" http://text-processing.com/api/sentiment/')

它忽略我的变量赋值,并继续打印出 JSON 对象。

有什么建议吗?

有几种方法可以做到这一点。 与代码最相似的方法是使用subprocess包调用操作系统。

import subprocess
process = subprocess.Popen(['curl', '-d', '"text=great"',
'http://text-processing.com/api/sentiment/'],
stdout=subprocess.PIPE)
stuff, err = process.communicate()

另一种方法是使用 python 包发出 post 请求。

import requests
response = requests.post(url='http://text-processing.com/api/sentiment/',
data="text=great").content
stuff = response.content

最新更新