Python аргументы не анализируются при передаче - PullRequest
0 голосов
/ 03 марта 2012

У меня есть следующий код в минуту:

parser = argparse.ArgumentParser(prog='Tempus')
ex_group = parser.add_mutually_exclusive_group(required=True)

## Miscellaneous but needed args
parser.add_argument('--mode', type=str, choices=['xml', 'text', 'term'], 
                        dest='mode', required=True, help='export mode')
parser.add_argument('-v', '--verbose', action='store_true', 
                       dest='verbose', help='enable verbose/debug mode')

# Input methods
ex_group.add_argument('--i', action='store_true', 
                       dest='interactive', help='enter interactive mode')
ex_group.add_argument('--p', metavar='I', type=float, 
                       dest='integer', help='percentage to use')

args = parser.parse_args()

Однако, когда я передаю необходимые аргументы, в любом порядке я получаю сообщение об ошибке:

Tempus: error: argument --mode is required

Иэто происходит, даже когда я передаю этот аргумент.Любой способ отсортировать это?

Спасибо!

РЕДАКТИРОВАТЬ: Спасибо всем, у меня все получилось, получается выполнить его без предварительного указания exe-файла pythonне передавайте аргументы.

Еще один быстрый вопрос: возможно ли создать аргумент, похожий на --mode в моем коде, но разрешить передачу дополнительного аргумента одному из вариантов?

Например, есть команда, такая как --input, которая может принимать два аргумента 'integer' и 'interactive', но я также могу передать число целочисленной команде --input?Таким образом, команда будет читать: --введите целое число 23, например?Это возможно?

1 Ответ

1 голос
/ 03 марта 2012

Попробуйте 1. распечатать sys.argv перед синтаксическим анализом или 2. явно добавить аргументы внутри скрипта, как в http://docs.python.org/dev/library/argparse.html#parsing-arguments

Таким образом, вы можете исключить любую путаницу в отношении того, какие аргументы argparse фактически видит.

...