argparse хранить false, если не указано


parser.add_argument('-auto', action='store_true')

Как я могу хранить false, если -auto неопределено? Я слабо помню, что таким образом, он не хранит ничего, если не указано

3 56

3 ответа:

The store_true опция автоматически создает значение по умолчанию ложные.

кроме того, store_false по умолчанию правда если аргумент командной строки отсутствует.

источник этого поведения лаконичен и ясен:http://hg.python.org/cpython/file/2.7/Lib/argparse.py#l861

документы argparse не ясны по этому вопросу, поэтому я обновлю их сейчас: http://hg.python.org/cpython/rev/49677cc6d83a

С

import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-auto', action='store_true', )
args=parser.parse_args()
print(args)

под управлением

% test.py

доходность

Namespace(auto=False)

так что это, кажется, хранение False по умолчанию.

store_false будет фактически по умолчанию 0 по умолчанию (можно проверить). Чтобы изменить значение по умолчанию, просто добавьте default=True на ваше заявление.

в этом случае: parser.add_argument('-auto', action='store_true', default=True)