我是python的初学者。我试图在Python脚本中执行curl命令。
如果我在终端中这样做,它看起来像这样:
{{1}}
我尝试做研究,所以我想我可以使用urllib2库。
如何运行此命令?
答案 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)