首页 > 解决方案 > 如何使用 Shelex 将变量传递给 curl 命令

问题描述

我在 python 中使用下面的 curl 命令,并且我能够成功运行它。但我想将身份验证 ID 和租户 ID 存储在一个变量中,然后在 curl 命令中使用该变量。请让我知道我该怎么做。先感谢您。

import shlex
auth_id = 'test'

tenant_id = 'testt'
cmd = '''curl -X POST -i -u auth_id@tenant:password -H 'Content-Type: 
application/json' -d '{"rotate": 23.07, "pressure": 45.85}'  
http://localhost:8080/telemetry'''
args = shlex.split(cmd)
process = subprocess.Popen(args, shell=False, 
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()

标签: pythonshell

解决方案


您可以改用 pycurl:

import pycurl
import json

headers = ['Content-Type: application/json']
data = json.dumps({"rotate": 23.07, "pressure": 45.85})

credentials = 'username:password'

p = pycurl.Curl()
p.setopt(pycurl.POST, 1)
p.setopt(pycurl.HTTPHEADER, headers)
p.setopt(pycurl.POSTFIELDS, data)
p.setopt(pycurl.VERBOSE, True)
p.setopt(pycurl.USERPWD, credentials)
pass_url=str("http://localhost:8080/")
p.setopt(pycurl.URL, pass_url)
p.perform()
p.close() 

推荐阅读