在一个实例中使用Python变量

时间:2014-07-07 20:43:06

标签: python variables

我想要完成的只是在我的“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'])"

...

1 个答案:

答案 0 :(得分:3)

{....}是产生set object的语法:

  

从Python 2.7开始,非空集(不是frozensets)可以通过在大括号中放置以逗号分隔的元素列表来创建,例如:{'jack', 'sjoerd'},除set之外1}}构造函数。

例如:

>>> {'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现在负责正确编码查询参数。

相关问题