如何将子流程的结果放入变量中
How to put results of subprocess in a variable
我只能通过使用 cURL 来检索我的数据,我认为子进程是更简单的方法,但我不能将数据放在变量中。
比如像这样
data = subprocess.call('curl "URL" -X GET', shell=True)
有什么简单的方法可以通过 python 做到这一点吗?
如果您尝试使用子流程执行此操作并想要调用的结果,那么您正在寻找 check_output
:
data = subprocess.check_output(["curl", URL])
但是,我建议您使用 Python 中的 requests 库来完成您正在做的事情。功能齐全,让您的生活更轻松。
这是一个使用请求的简单示例:
请确保您已先安装请求。它不是内置库。我链接的 URL 将解释如何执行此操作。
>>> import requests
>>> d = requests.get("http://www.google.ca")
>>> print(d)
<Response [200]>
您可以从该响应中获得大量数据。如果您执行 d.text
,您将收到文本回复。我建议您阅读文档以了解如何使用它。它是一个功能齐全的库,具有大量功能。
我建议您浏览文档以获取您想要的所有其他内容。
试试这个:
data = subprocess.Popen(command, shell=True, stdout = subprocess.PIPE, stderr=subprocess.PIPE)
std_out, std_err = data.communicate()
该页面还包含有关 shell=True
为什么危险的描述。值得一读
编辑:
这是做你想做的事情的艰难方式。它有效,所以我发布了一个替代方案,但我推荐@idjaw answers
以下方法对我有用。它可能是可用的,如果你需要 运行 命令有一个以上的参数:
def run_shell_command(cmd, params):
cmd_list = []
cmd_list.append(cmd)
cmd_list + string.split(params)
p = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
std_out, std_err = p.communicate()
return std_out, std_err
然后,调用函数如下:
outp = run_shell_command('curl', '\"URL\" -X GET')
P.S:而你don't需要使用shell=True
我只能通过使用 cURL 来检索我的数据,我认为子进程是更简单的方法,但我不能将数据放在变量中。
比如像这样
data = subprocess.call('curl "URL" -X GET', shell=True)
有什么简单的方法可以通过 python 做到这一点吗?
如果您尝试使用子流程执行此操作并想要调用的结果,那么您正在寻找 check_output
:
data = subprocess.check_output(["curl", URL])
但是,我建议您使用 Python 中的 requests 库来完成您正在做的事情。功能齐全,让您的生活更轻松。
这是一个使用请求的简单示例:
请确保您已先安装请求。它不是内置库。我链接的 URL 将解释如何执行此操作。
>>> import requests
>>> d = requests.get("http://www.google.ca")
>>> print(d)
<Response [200]>
您可以从该响应中获得大量数据。如果您执行 d.text
,您将收到文本回复。我建议您阅读文档以了解如何使用它。它是一个功能齐全的库,具有大量功能。
我建议您浏览文档以获取您想要的所有其他内容。
试试这个:
data = subprocess.Popen(command, shell=True, stdout = subprocess.PIPE, stderr=subprocess.PIPE)
std_out, std_err = data.communicate()
该页面还包含有关 shell=True
为什么危险的描述。值得一读
编辑:
这是做你想做的事情的艰难方式。它有效,所以我发布了一个替代方案,但我推荐@idjaw answers
以下方法对我有用。它可能是可用的,如果你需要 运行 命令有一个以上的参数:
def run_shell_command(cmd, params):
cmd_list = []
cmd_list.append(cmd)
cmd_list + string.split(params)
p = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
std_out, std_err = p.communicate()
return std_out, std_err
然后,调用函数如下:
outp = run_shell_command('curl', '\"URL\" -X GET')
P.S:而你don't需要使用shell=True