Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中进行终端调用的方法,捕获返回的内容?_Python - Fatal编程技术网

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

在Python中进行终端调用的方法,捕获返回的内容?,python,Python,我现在正在做一个项目,将字符串传递到这个NLPAPI,它返回字符串情感分析的JSON对象。我承认我是Python新手: 通过命令行调用API的文档非常简单。当我打开终端并运行命令时,它工作正常 curl -d "text=great" http://text-processing.com/api/sentiment/ 在终端上运行该命令会产生: {"probability": {"neg": 0.59309571705919506, "neutral": 0.5403849950008478

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

通过命令行调用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对象


有什么建议吗?

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

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请求并检索响应是明智的做法(我知道这是问题的前提,但问题的前提可能不好)。这也可以很容易地完成,而无需生成流程和外部依赖关系。同意,请求库对于我计划做的事情来说效率更高。谢谢