Как мне запустить определенную функцию на основе выбранного click.option?

#python #python-3.x #boto3

#python #python-3.x #boto3

Вопрос:

Я создаю простое приложение, которое позволяет мне передавать либо имя, либо IP-адрес, который возвращает результаты в форматированном выводе. Это работает нормально, за исключением того, что выдает два вывода или ошибку в зависимости от того, какой click.option я использую:

 @click.command()
@click.option('--env', '-e', default='*', help='search for a specific environment')
@click.option('--ipaddr', '-i', required=False, help='search for a specific ip')
 
def main(env):
    
        ec2_info = get_instance_info(env)
        for i in ec2_info:
            if i in ec2_info:

                print("Id: {0}tS: {1}tName: {2}tIP ADDR: {3}tENVIRONMENT {4}tINST TYPE: {5}".format(
                '%-20s' % i['InstanceID'],
                i['State'][0].upper(),
                '%-70s' % i['Name'],
                i['PrivateIpAddress'],
                '%-50s' % i['Environment'],
                i['InstanceType']
            ))

        ip_info = get_ip_info(ipaddr)

        for i in ip_info:
            if i in ip_info:
                print("Id: {0}tS: {1}tName: {2}tIP ADDR: {3}tENVIRONMENT {4}tINST TYPE: {5}".format(
                '%-20s' % i['InstanceID'],
                i['State'][0].upper(),
                '%-70s' % i['Name'],
                i['PrivateIpAddress'],
                '%-50s' % i['Environment'],
                i['InstanceType']
            ))
    

if __name__ == "__main__":
    main()
  

Если я передаю переключатель -e, он показывает результаты, а затем ошибки на ipaddr, потому что я ничего не передал. Если я выбираю -i, он использует значение по умолчанию и выводит оба. Как выполнить только одну из моих функций одновременно?

Ответ №1:

Я не уверен, что это лучший способ справиться с этим, но я просто добавил операторы If в каждый из разделов в разделе def main (env, ipaddr, role)