我有一段如下的代码,用于向API调用发送IP地址列表
body = {'cID': id, 'dbType': params['db-type'].upper(), 'cidrList': eval(params['--cidr-list'])}
print(json.dumps(body))
conn.request("POST", "/Link/to/API", body=json.dumps(body), headers=header)
check_resp(200)
logger.info("Rules changed successfully")
但是,当我使用下面的参数调用此代码时,它失败了
--cidr-list ['10.20.0.0/32','10.30.0.0/32']
当我使用下面的选项时,它会起作用
--cidr-list [\"10.20.0.0/32\",\"10.30.0.0/32\"]
因此,基本上,当我使用\"
包装列表中的每个项目时,它被解析为单引号。如何更改代码以使其接受输入1?我是Python新手,如果您能解释一下Python背后的逻辑,我将不胜感激。提前谢谢
您需要转义单引号,因为shell也使用单引号
最好的方法是把整个论点用引号引起来
顺便说一句,您应该使用
ast.literal_eval()
而不是eval()
不要将Python知识作为使用程序的必要条件
然后使用
所有参数都已经是字符串;您不需要对用户强制使用Python字符串文字语法,并且逗号分隔的字符串足以处理成CIDR地址列表,而无需对用户强制使用Python列表语法
相关问题 更多 >
编程相关推荐