使用python

时间:2015-12-10 09:33:04

标签: python wget

我正在python脚本中进行一些wget调用,我在其中发出一些PUT方法来发送一些命令,但是当python正在解析我想发送的wget命令时,它会在一个变量内报告一个KeyError。打电话。

我创建的命令是

wget = "wget --http-user={user} --http-password={password} --header='Accept:application/json' --header='Content-Type:application/json' --method=PUT --body-data='{'mode':'{bodyD}'}' -O- http://{IPaddress}/api/{v}/{cm}" .format(user=usr,password=pswd,IPaddress=node,v=version,bodyD=bodyData,cm=Command)

当发出该命令时,KeyError是" KeyError:'模式'"来自哪里的错误是什么?我是否必须使用"模式"因为它被保留了?

提前致谢,

此致

3 个答案:

答案 0 :(得分:1)

按照https://stackoverflow.com/a/5466478/968442

中的建议使用双{{ }}

BodyData通常也是JSON,可能需要双引号。

usr = "test"
pswd = "test"
node = "test"
version = "test"
bodyData = "test"
Command = "test"
wget = """wget --http-user={user} --http-password={password} --header='Accept:application/json' --header='Content-Type:application/json' --method=PUT --body-data='{{"mode":"{bodyD}"}}' -O- http://{IPaddress}/api/{v}/{cm}""".format(user=usr,password=pswd,IPaddress=node,v=version,bodyD=bodyData,cm=Command)

print wget

日志:

> python test.py
wget --http-user=test --http-password=test --header='Accept:application/json' --header='Content-Type:application/json' --method=PUT --body-data='{"mode":"test"}' -O- http://test/api/test/test

答案 1 :(得分:1)

尝试使用双{{}}括号,如下所示:

wget = "wget --http-user={user} --http-password={password} --header='Accept:application/json' --header='Content-Type:application/json' --method=PUT --body-data='{{'mode':'{bodyD}'}}' -O- http://{IPaddress}/api/{v}/{cm}" .format(user=usr,password=pswd,IPaddress=node,v=version,bodyD=bodyData,cm=Command)

答案 2 :(得分:0)

我试图使用它的回复,但它没有用。然而,这给了我一个暗示,并使它的花括号加倍。

所以这个命令可以正常工作

wget = "wget --http-user={user} --http-password={password} --header='Accept:application/json' --header='Content-Type:application/json' --method=PUT --body-data='{{mode:{bodyD}}}' -O- http://{IPaddress}/api/{v}/{cm}" .format(user=usr,password=pswd,IPaddress=node,v=version,bodyD=bodyData,cm=Command)