Argparse store false, если не указано
parser.add_argument('-auto', action='store_true')
Как я могу хранить false, если -auto
не указано? Я могу слабо помнить, что таким образом он сохраняет None, если не указано
Ответы
Ответ 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)