Логический аргумент для 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'