我正在构建一个简单的应用程序,它允许我传递一个名称或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条答案
按热度按时间wfveoks01#
我不确定这是否是处理这个问题的最佳方式,但我只是在defmain(env,ipaddr,role)下的每个部分添加了If语句