2015-10-10 3 views

ответ

1

См. Пример с целыми числами в documentation. Не включайте дефисы, и аргумент будет рассматриваться как позиционный аргумент.

>>> parser = argparse.ArgumentParser() 
>>> parser.add_argument('first_supplied_argument', help='help') 
>>> parser.add_argument('second_supplied_argument', help='help') 
>>> args = parser.parse_args(['1', '2']) 
Namespace(first_supplied_argument='1', second_supplied_argument='2') 

Редактировать на основе комментариев:

возможность поставлять как позиционные и необязательные аргументы вы? Я думаю, вам все равно нужно будет предоставить хотя бы один позиционный аргумент.

parser = argparse.ArgumentParser() 
parser.add_argument('--first', help='help') 
parser.add_argument('first', nargs='?', help='help') 
parser.add_argument('--second', help='help') 
parser.add_argument('second', nargs='?', help='help') 

print parser.parse_args(['1', '2']) 
print parser.parse_args(['1', '--second', '2']) 
print parser.parse_args(['--first', '1', '--second', '2']) # doesn't work 
print parser.parse_args(['', '--first', '1', '--second', '2']) # probably not what you want to do 

Выход:

Namespace(first='1', second='2') 
Namespace(first='1', second='2') 
Namespace(first=None, second=None) # doesn't work 
Namespace(first='1', second='2') 
+0

Я хочу сохранить возможность использовать имена. Я хочу реплицировать функциональность, которую я получал бы от функции python. – David

+0

Можете ли вы предоставить как позиционные, так и необязательные аргументы? –

+0

Поверхностно это будет похоже, но не совсем то же самое. Вы сможете указать значения в любом случае. Но поведение, когда ни дано, ни когда оба используются, могут быть разными. – hpaulj

Смежные вопросы