在Python中执行curl命令

时间:2016-03-11 18:56:14

标签: python curl urllib2 bottle

我是python的初学者。我试图在Python脚本中执行curl命令。

如果我在终端中这样做,它看起来像这样:

{{1}}

我尝试做研究,所以我想我可以使用urllib2库。

如何运行此命令?

4 个答案:

答案 0 :(得分:1)

试试这个

import subprocess

bash_com = 'curl -k -H "Authorization: Bearer xxxxxxxxxxxxxxxx" -H "hawkular-tenant: test" -X GET https://www.example.com/test | python -m json.tool'
subprocess.Popen(bash_com)
output = subprocess.check_output(['bash','-c', bash_com])

这是一种很好的方法,因为它可以避免使用可能使丑陋的os.system。但是尽量避免从Python内部调用bash命令,特别是在这种情况下你可以简单地使用Requests

答案 1 :(得分:0)

我不建议从Python内部通过shell调用curl。那么httplib呢?

import httplib
conn = httplib.HTTPConnection("https://www.example.com/test")
conn.request("HEAD","Authorization: Bearer xxxxxxxxxxxxxxxx")
conn.request("HEAD", "hawkular-tenant: test")
res = conn.getresponse()

如果您使用的是Python3,那么您需要将httplib换成http.client

答案 2 :(得分:0)

您可以将子进程与Popen一起使用并进行通信以执行命令并检索输出。

def executeCommand(cmd, debug = False):
   '''
   Excecute a command and return the stdiout and errors.
   cmd: list of the command. e.g.: ['ls', '-la']
   '''
   try:
      cmd_data = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
      output,error = cmd_data.communicate()
      if debug:
         if (len(error)>1):
            print 'Error:', error
         if (len(output)>1):
            print 'Output:', output
      return output, error
   except:
      return 'Error in command:', cmd

然后,您将命令设为

executeCommand(['curl', '-k', '-H', '"Authorization: Bearer xxxxxxxxxxxxxxxx"', '-H', '"hawkular-tenant: test"', '-X', 'GET', 'https://www.example.com/test', '|', 'python', '-m', 'json.tool'])

答案 3 :(得分:-1)

您可以使用pycurl库。

pip install pycurl

说明和示例here