标题几乎总结了我想发生的事情。
我想执行一个使用IP地址和社区字符串执行某些操作的python脚本。
我使用以下命令进行解析:
import argparse
def get_args():
'''This function parses and return arguments passed in'''
# Assign description to the help doc
parser = argparse.ArgumentParser(
description='')
# Add arguments
parser.add_argument(
'-i', '--ip-adress', type=str, help='ip address of the host', required=True)
parser.add_argument(
'-c', '--community', type=str, help='community string', required=True)
# Array for all arguments passed to script
args = parser.parse_args()
# Assign args to variables
IP = args.ip-adress
COMMUNITY = args.community
# Return all variable values
return IP ,COMMUNITY
# Run get_args()
# get_args()
# Match return values from get_arguments()
# and assign to their respective variables
IP , COMMUNITY = get_args()
# Print the values
print "\n ip address : [ %s ]\n" % IP
print "\ncommunity: [ %s ]\n" % COMMUNITY
但是,无论我如何处理参数,我都无法弄清楚为什么会出现此错误。
python arg.py -i 10.0.1.2 -c xxbsd
Traceback (most recent call last):
File "arg.py", line 30, in <module>
IP , COMMUNITY = get_args()
File "arg.py", line 20, in get_args
IP = args.ip-adress
AttributeError: 'Namespace' object has no attribute 'ip'
有人可以帮忙吗?
答案 0 :(得分:3)
您应该使用args.ip-adress
而不是args.ip_adress
。
已编辑
: -
符号是减号,不能在变量名中使用。 argparse会将其转换为变量args.ip_address
,所以使用它,您会很高兴
答案 1 :(得分:2)
我认为您不能在变量名称中使用破折号,因为Python会将其解释为args.ip minus adress
。
您可以将变量名更改为args.ipaddress
,它应该可以工作。
答案 2 :(得分:0)
要完全控制变量名,可以指定自己的名称
parser.add_argument(... dest=my_var ...)