#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)