Вы неправильно понимаете, как argparse
понимает логические аргументы.
В основном вам следует использовать action='store_true'
или action='store_false'
вместо значения по умолчанию, с пониманием, что отсутствие указания аргумента даст вам обратное действие, например,
parser.add_argument('-x', type=bool, action='store_true')
приведет к тому, что
python3 command -x
будет иметь x
, установленный на True
, и
python3 command
, чтобы иметь x
установлен на False
.
В то время как action=store_false
сделает противоположное.
Установка bool
для типа не ведет себя так, как вы ожидаете, и это известная проблема .
Причина текущего поведения заключается в том, что type
должен вызываться как argument = type(argument)
. bool('False')
оценивается как True
, поэтому вам нужно установить другое type
для ожидаемого поведения.