Подтвердить что ты не робот

Argparse store false, если не указано

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

С

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

работает

% test.py

дает

Namespace(auto=False)

Таким образом, по умолчанию оно хранит False.

Ответ 3

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

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