Как я достичь следующей команды с помощью переопределения метода argpase.Action (переопределение __call__()
метода)Перекрытие метод argparse.Action в argparse модулы
python program.py --delete --file filename
Как я достичь следующей команды с помощью переопределения метода argpase.Action (переопределение __call__()
метода)Перекрытие метод argparse.Action в argparse модулы
python program.py --delete --file filename
С этим определением:.
parser = argparse.ArgumentParser()
parser.add_argument('--delete', action='store_true')
parser.add_argument('--file') # default 'store' action
вашего входным следует производить args
что выглядит следующим образом:
namespace(delete=True, file='filename')
Это до ваш код, чтобы использовать boolean args.delete
и строку args.file
.
В документации по argparse обсуждается запись пользовательского класса Action
, но я не думаю, что вам нужно это сделать здесь. Помните, что основная задача анализатора - синтаксический анализ, выяснение того, что пользователь хочет в командной строке. Это не исполнитель. Он не действует по этой информации.
Но это работает, даже если мы даем имя файла перед аргументом delete. но я не хочу таким образом. Мне нужно удалить сначала, а затем имя файла. Как я могу это сделать? –
Да, помеченные таким образом аргументы могут возникать в любом порядке; это конструктивная особенность 'argparse'. Посмотрите на подпарамеры в документах, чтобы увидеть, как реализовать 'python prog.py delete -file имя_файла', где' delete' понимается как «команда», а не параметр True/False. – hpaulj