在Python中进行终端调用的方法,捕获返回的内容?
我现在正在做一个项目,将字符串传递到这个NLPAPI,它返回字符串情感分析的JSON对象。我承认我是Python新手: 通过命令行调用API的文档非常简单。当我打开终端并运行命令时,它工作正常在Python中进行终端调用的方法,捕获返回的内容?,python,Python,我现在正在做一个项目,将字符串传递到这个NLPAPI,它返回字符串情感分析的JSON对象。我承认我是Python新手: 通过命令行调用API的文档非常简单。当我打开终端并运行命令时,它工作正常 curl -d "text=great" http://text-processing.com/api/sentiment/ 在终端上运行该命令会产生: {"probability": {"neg": 0.59309571705919506, "neutral": 0.5403849950008478
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对象
有什么建议吗?有几种方法可以做到这一点。与代码最相似的方法是使用
子流程
包调用操作系统
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
有几种方法可以做到这一点。与代码最相似的方法是使用
子流程
包调用操作系统
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
下面是对其他人提出的基本相同问题的答案:作为建议,您也可以使用pythons native requests而不是curl()。python完全能够从http请求获取JSON,您不需要为此启动另一个进程。您可以使用内置模块
urllib
,或者更直接地安装请求
。谢谢大家!看起来请求库是最好的方法。下面是对其他人提出的基本相同问题的答案:作为建议,您也可以使用pythons native requests而不是curl()。python完全能够从http请求中获取JSON,您不需要为此启动另一个进程。您可以使用内置模块urllib
,或者更直接地安装请求
。谢谢大家!似乎请求库是最好的方法。这似乎表明从python启动curl来执行http请求并检索响应是一件明智的事情,尽管(我知道这是问题的前提,但问题的前提可能不好)。这也可以很容易地完成,而无需生成流程和外部依赖关系。同意,请求库对于我计划做的事情来说效率更高。谢谢这似乎表明,从python启动curl来执行http请求并检索响应是明智的做法(我知道这是问题的前提,但问题的前提可能不好)。这也可以很容易地完成,而无需生成流程和外部依赖关系。同意,请求库对于我计划做的事情来说效率更高。谢谢