2015-12-21 2 views

ответ

0

С этим определением:.

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, но я не думаю, что вам нужно это сделать здесь. Помните, что основная задача анализатора - синтаксический анализ, выяснение того, что пользователь хочет в командной строке. Это не исполнитель. Он не действует по этой информации.

+0

Но это работает, даже если мы даем имя файла перед аргументом delete. но я не хочу таким образом. Мне нужно удалить сначала, а затем имя файла. Как я могу это сделать? –

+0

Да, помеченные таким образом аргументы могут возникать в любом порядке; это конструктивная особенность 'argparse'. Посмотрите на подпарамеры в документах, чтобы увидеть, как реализовать 'python prog.py delete -file имя_файла', где' delete' понимается как «команда», а не параметр True/False. – hpaulj

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