Как использовать argparse IP-адрес и строку сообщества? - PullRequest
0 голосов
/ 17 сентября 2018

Заголовок в значительной степени суммирует то, что я хотел бы, чтобы произошло.

Я хочу выполнить скрипт Python, который делает что-то с IP-адресом и строкой сообщества.

Я использую следующеекоманда для разбора:

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'

Может ли кто-нибудь помочь?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вместо args.ip-adress следует использовать args.ip_adress.

РЕДАКТИРОВАНИЕ:

символ - является вычитанием и не может использоваться в именах переменных,argparse переведет его в переменную args.ip_address, так что используйте его, и вы получите золотой

0 голосов
/ 17 сентября 2018

Я думаю, что вы не можете использовать тире в имени переменной, потому что Python будет интерпретировать его как args.ip minus adress.

Вы можете изменить имя переменной на args.ipaddress, и оно должно работать.

...