如何使用argparse IP地址和社区字符串?

时间:2018-09-17 01:05:42

标签: python network-programming argparse

标题几乎总结了我想发生的事情。

我想执行一个使用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'

有人可以帮忙吗?

3 个答案:

答案 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 ...)