嗨,我正试图在python3.8(lambda)的for循环中循环一些值,以创建一些bitbucket pipline变量。首先,为了证明我的代码有效,我运行以下代码,该代码经过2个值的循环,创建一个名为“ acc”的变量,并给出201响应,然后在循环中第二次存在该变量acc,因此它返回409,这是我所期望的那样
accounts=['123', '12345']
for acc in accounts:
http = urllib3.PoolManager()
payload='{"key": "acc","value":"apply","secured":"false"}'
data = payload
url = 'https://api.bitbucket.org/2.0/repositories/<workspace>/<project>/pipelines_config/variables/'
headers = urllib3.util.make_headers(basic_auth='user' + ':' + 'Password')
print(headers)
headers['Content-type'] = 'application/json'
print(headers)
r = http.request('POST', url, headers=headers, body=data)
现在如果我将有效负载中的“ acc”更改为实际上是im传入的变量,则会失败,并显示400错误。
accounts=['123', '12345']
for **acc** in accounts:
http = urllib3.PoolManager()
payload='{"key": "'+ acc +'","value":"apply","secured":"false"}'
data = payload
url = 'https://api.bitbucket.org/2.0/repositories/<workspace>/<project>/pipelines_config/variables/'
headers = urllib3.util.make_headers(basic_auth='user' + ':' + 'Password')
print(headers)
headers['Content-type'] = 'application/json'
print(headers)
r = http.request('POST', url, headers=headers, body=data)
我已经尝试过几乎可以想到的所有组合,包括转义/使用双单引号等,但是没有地方。
如何将变量从循环传递到此有效载荷中?
答案 0 :(得分:0)
也许我只是没有得到它,但是为什么不简单地使用acc变量而不是在第一个示例中将其设为字符串呢?
accounts=['123', '12345']
for acc in accounts:
http = urllib3.PoolManager()
payload='{"key": "'+ acc +'","value":"apply","secured":"false"}'
data = payload
...
答案 1 :(得分:0)
经过数小时的尝试,我才弄清楚了。 BitBucket不允许变量以数字开头。 当然可以,如果他们的文档建议这样做!