Python 在子流程curl中使用变量

Python 在子流程curl中使用变量,python,json,curl,subprocess,Python,Json,Curl,Subprocess,我知道在这方面有一些问题需要回答,但我想问一下,因为这与其他问题不同 我正在尝试使用子流程发送curl请求,但无法获取函数的变量: config = json.loads(open('/etc/config.json').read()) endpoint = config["end_point"] auth = config["auth_token"] config["widgets"] #Send using subprocess import

我知道在这方面有一些问题需要回答,但我想问一下,因为这与其他问题不同

我正在尝试使用子流程发送curl请求,但无法获取函数的变量:

 config = json.loads(open('/etc/config.json').read())
    endpoint = config["end_point"]
    auth = config["auth_token"]
    config["widgets"]



    #Send using subprocess
    import subprocess
    subprocess.call([
    'curl',
    '-X',
    'POST',
    '-H',
    'Content-Type: application/json',
    '-d',
    '{ "auth_token": **'auth'**, "widget": "329bdbea887ad8e10e4e496f7a60f898", "title": "Something", "items":[{"label": "testR", "value": "$999.99"}, {"label": "testB", "value": "$9,001.00"}] }',
    **'endpoint'**
配置文件包含以下内容:

{"end_point":"http://domain.com","auth_token":"e91a0ffe758c19=ed0","widgets":{"host_info":"fd8a63ads499289a312","memory_info":"0bc2c24ds28bc4c507ad","cpu_info":"5assd0dc41dbd73681"}}
auth和endpointurl都不工作

完整代码为:

导入子流程 subprocess.call[ "卷曲",, “-X”, "岗位",, “-H”, '内容类型:application/json', “-d”, “{auth_令牌:e91a0ffe758c194896eb4daed0,小部件:329bdbea887ad8496f7a60f898,标题:某物,项目:[{label:text2,值:$999.99},{label:text1,值:$9001.00}”, ]

在这里,我尝试使用auth变量代替e91a0ffe758c194896eb4daed0

config["widgets"]
什么都没做,不清楚你想要什么。据我所知,你的意思是:

'{ "auth_token": 'auth', "widget": "329bdbea887ad8e10e4e496f7a60f898", "title": "Something", "items":[{"label": "testR", "value": "$999.99"}, {"label": "testB", "value": "$9,001.00"}] }',
就是将一些JSON传递给字符串内部的cURL。那么,你要找的是:

'{ "auth_token": "%s", "widget": "329bdbea887ad8e10e4e496f7a60f898", "title": "Something", "items":[{"label": "testR", "value": "$999.99"}, {"label": "testB", "value": "$9,001.00"}] }' % auth
此外,“endpoint”表示“包含字符“e”、“n”、“d”、“p”、“o”、“i”、“n”、“t”的字符串,而不是您的变量endpoint”。你可能只是想把引号放在那里。您还没有粘贴所有的代码,因为括号是不平衡的,所以我们无法确定发生了什么,但这可能只是一个开始


编辑:再试一次,我犯了一个错误-string.format无法工作,因为字符串中有{}个字符。使用上面已更正的%解决方案。

是否有任何错误?当然是这样,否则代码粘贴错误。@jedwards我没有收到任何错误。和@KarolyHorvath print auth在本例中无效。**auth=config[auth_token]**无效syntax@PatrickCollins这是Stackoverflow上的粗体字。现在修好了。知道如何在子流程中使用该变量吗?@user2843053:*'auth'**也无效-**是一个有意义的字符序列,请注意不要在代码中使用它。这也是为了加粗吗?谢谢你的回答。对不起,如果不清楚的话。如果你有疑问,我再给你解释一遍。我想要的是基本上在subprocess.call中传递一个变量(在本例中为auth)。auth_标记:{},没有为我执行此操作,因为值在“”中。如何在子流程调用中将auth分配给auth_令牌值?请发布您试图在问题中使用的完整代码。当您尝试我刚才发布的代码时,会出现什么错误?您期望的值是多少?你得到的值是多少?我期望的值应该是auth的值,很明显:@peter检查这里: