我正在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:'模式'"来自哪里的错误是什么?我是否必须使用"模式"因为它被保留了?
提前致谢,
此致
答案 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)