python-3.x 如何根据所选的click.选项运行特定功能?

vuv7lop3  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(125)

我正在构建一个简单的应用程序,它允许我传递一个名称或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,它将使用默认值并输出两者。如何一次只执行一个函数?

wfveoks0

wfveoks01#

我不确定这是否是处理这个问题的最佳方式,但我只是在defmain(env,ipaddr,role)下的每个部分添加了If语句

相关问题