我想要完成的只是在“scanjob”变量中使用第二个变量添加“api_tok”。我使用的产品每次调用都需要 api_token,所以我只想在需要的地方持续添加“api_tok”。到目前为止
auths = requests.get('http://10.0.0.127:443', auth=('admin', 'blahblah'), headers = heads)
api_tok = {'api_token=e27e901c196b8f0399bc79'}
scanjob = requests.get('http://10.0.0.127:4242/scanjob/1?%s' % (api_tok))
scanjob.url
u"http://10.0.0.127:4242/scanjob/1?set(['api_token=e27e901c196b8f0399bc79'])"
从scanjob.url中可以看到,它在“?”后面添加了一个“set”。为什么?如果我可以删除该“设置”,我的通话就会成功。我尝试了许多不同的组合字符串的变体,例如:
scanjob = requests.get('http://10.0.0.127:4242/scanjob/1?%s' + api_tok)
scanjob.url
u"http://10.0.0.127:4242/scanjob/1?set(['api_token=e27e901c196b8f0399bc79'])"
scanjob = requests.get('http://10.0.0.127:4242/scanjob/1?' + str(api_tok))
scanjob.url
u"http://10.0.0.127:4242/scanjob/1?set(['api_token=e27e901c196b8f0399bc79'])"
??
最佳答案
{....}
是生成 set object 的语法。 :
As of Python 2.7, non-empty sets (not
frozensets
) can be created by placing a comma-separated list of elements within braces, for example:{'jack', 'sjoerd'}
, in addition to theset
constructor.
例如:
>>> {'api_token=e27e901c196b8f0399bc79'}
set(['api_token=e27e901c196b8f0399bc79'])
>>> {'jack', 'sjoerd'}
set(['jack', 'sjoerd'])
这就是您的神秘 set([...])
文本的来源。
您只想在此处生成一个字符串:
api_tok = 'api_token=e27e901c196b8f0399bc79'
scanjob = requests.get('http://10.0.0.127:4242/scanjob/1?%s' % api_tok)
或者,告诉 requests
使用 params
关键字参数添加查询参数,并传入字典:
parameters = {'api_token': 'e27e901c196b8f0399bc79'}
scanjob = requests.get('http://10.0.0.127:4242/scanjob/1', params=parameters)
这还有一个额外的优点:requests
现在负责正确编码查询参数。
关于python - 在一个实例中使用 Python 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619512/