Логический аргумент для script

В Python я понимаю, как аргументы int и str могут быть добавлены в скрипты.

parser=argparse.ArgumentParser(description="""Mydescription""")
parser.add_argument('-l', type=str, default='info', help='String argument')
parser.add_argument('-dt', type=int, default ='', help='int argument')

Что это за булевы?

В принципе, я хочу передать флаг в мой script, который сообщит script, делать ли какое-либо действие или нет.

Ответ 1

Вы можете использовать action с store_true | store_false, или вы можете использовать int и позволить неявному кастингу проверять логическое значение.

Используя action, вы не передадите аргумент --foo=true и --foo=false, вы просто включите его, если оно должно быть установлено в true.

python myProgram.py --foo

На самом деле я думаю, что вам может понадобиться

parser.add_argument('-b', action='store_true', default=False)

Ответ 2

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

Ответ 3

import distutils.util
ARGP.add_argument('--on', '-o', type=distutils.util.strtobool, default='true')

Пример:

$ ./myscript                # argp.on = 1
$ ./myscript --on=false     # argp.on = 0
$ ./myscript --on=False     # argp.on = 0
$ ./myscript --on=0         # argp.on = 0
$ ./myscript --on=1         # argp.on = 1
$ ./myscript -o0            # argp.on = 0
$ ./myscript -o false       # argp.on == 0

Я должен упомянуть, вы также можете связать аргумент с локальной функцией-оболочкой, чтобы обрабатывать некоторые другие точные соответствия строк, если вы хотите поддерживать такие значения, как "да" и "нет". вы также можете попробовать интерпретировать ввод как yaml, который может обрабатывать да/нет. Я не сделал этого некоторое время, хотя, и я думаю, что в последнее время я сосать взаимоисключающие аргументы с тем же значением dest, одним --no-option с action='store_false' и одним --option с action='store_true'