Python с использованием метода argparse.ArgumentParser
Я пытался узнать, как работает argparse.ArgumentParser
, и я написал пару строк для этого:
global firstProduct
global secondProduct
myparser=argparse.ArgumentParser(description='parser test')
myparser.add_argument("product1",help="enter product1",dest='product_1')
myparser.add_argument("product2",help="enter product2",dest='product_2')
args=myparser.parse_args()
firstProduct=args.product_1
secondProduct=args.product_2
Я просто хочу, чтобы, когда пользователь запустил этот script с двумя параметрами, мой код назначил их firstProduct
и secondProduct
соответственно. Однако это не работает. Кто-нибудь скажет мне, почему? заранее спасибо
Ответы
Ответ 1
Опустить параметр dest
при использовании позиционного аргумента. Имя, указанное для аргумента positional, будет именем аргумента:
import argparse
myparser = argparse.ArgumentParser(description='parser test')
myparser.add_argument("product_1", help="enter product1")
myparser.add_argument("product_2", help="enter product2")
args = myparser.parse_args()
firstProduct = args.product_1
secondProduct = args.product_2
print(firstProduct, secondProduct)
Выполнение % test.py foo bar
отпечатков
('foo', 'bar')
Ответ 2
В дополнение к ответу unutbu, вы также можете использовать атрибут metavar
, чтобы сделать переменную назначения и имя переменной, отображаемой в меню помощи, различными, как показано в этой ссылке.
Например, если вы делаете:
myparser.add_argument("firstProduct", metavar="product_1", help="enter product1")
У вас будет аргумент, доступный для вас в args.firstProduct
но в args.firstProduct
он будет указан как product_1
.