Установка опции по умолчанию в Python двух взаимоисключающих опций с использованием модуля argparse - PullRequest
0 голосов
/ 20 февраля 2012
import argparse

parser = argparse.ArgumentParser(description="List or update! That is the question!")

group = parser.add_mutually_exclusive_group()
group.add_argument('-l', '--list', dest="update", action='store_false')
group.add_argument('-u', '--update', dest="update", action='store_true')

args = parser.parse_args()
print args

Если пользователь не указывает никаких необязательных аргументов, которые я хочу update=False.

[Редактировать]: я изменил свой вопрос, чтобы не быть таким общим, это сбивало с толку. Сожалею.

Ответы [ 3 ]

0 голосов
/ 20 февраля 2012

Я думаю, что вы хотите add_mutually_exclusive_group(). Документация здесь .

0 голосов
/ 20 февраля 2012

Добавление default=False для параметров опции --list заставляет его делать то, что вы хотите. Я не совсем уверен, почему, и обратите внимание, что добавление его в параметры опции --update вместо этого ничего не делает.

0 голосов
/ 20 февраля 2012

Вы должны установить разные dest для 2 вариантов.

group.add_argument('-f', '--foo', dest="foo", action='store_false')
...