#python
#python
Вопрос:
В Click можно использовать логические флаги, подобные этому:
import sys
@click.command()
@click.option('--shout/--no-shout', default=False)
def info(shout):
rv = sys.platform
if shout:
rv = rv.upper() '!!!!111'
click.echo(rv)
Однако, как связать уровень shout с существованием переменных среды SHOUT
или NO_SHOUT
как значение по умолчанию?
Ответ №1:
Как описано в документации, вы можете передать envvar
параметр.
@click.option('--shout/--no-shout', default=False, envvar='SHOUT')
Однако при этом будет проверяться SHOUT
поиск значения true / false. Я не знаю чистого способа проверить наличие двух разных переменных среды, как вы просили. (Что бы произошло, если бы они оба были установлены?)
Ответ №2:
Используйте os.environ
и проверьте, содержит ли он SHOUT
:
import sys
import os
@click.command()
@click.option('--shout/--no-shout', default=False)
def info(shout):
if not shout and "SHOUT" in os.environ:
shout = os.environ["shout"]
rv = sys.platform
if shout:
rv = rv.upper() '!!!!111'
click.echo(rv)
(Не тестировался, поскольку я не click
пользователь, но должен дать вам начальную идею)
Комментарии:
1.
click
работает с использованием декораторов и их аргументов; это может быть решением, но это не так, какclick
задумано. В любом случае спасибо.