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


в 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')

что это за переключатели?

в основном я хочу передать флаг в свой скрипт, который скажет скрипту, нужно ли делать определенное действие или нет.

3 70

3 ответа:

можно использовать 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)
parser.add_argument('--foo', action='store_true')
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, который также может обрабатывать yes/no. я не делал этого в то время, хотя, и я думаю, что в последнее время я сосать взаимоисключающие аргументы с тем же dest ценность --no-option С action='store_false' и один --option С action='store_true'