python click命令行界面创建工具

python click命令行界面创建工具
  • 定义:

    • 它旨在使编写命令行工具的过程既快速又有趣,同时还防止由于无法实现预期的CLI API而引起的挫败感。
  • 优点:

    • 命令的任意嵌套
    • 自动帮助页面生成
    • 支持在运行时延迟加载子命令
  • 安装

      pip install click
    
  1. click.option

    • option 最基本的用法就是通过指定命令行选项的名称,从命令行读取参数值,再将其传递给函数。我们除了设置命令行选项的名称,我们还会指定默认值,help 说明等,option 常用的设置参数如下:

      • default: 设置命令行参数的默认值
      • help: 参数说明
      • type: 参数类型,可以是 str, int, float,click.Choice类的对象
      • prompt: 当在命令行中没有输入相应的参数时,会根据 prompt 提示用户输入可以指定 True, 或者特定字符串来提示用户输入
      • nargs: 指定命令行参数接收的值的个数, -1 表示可以接收多个参数
      import click
      
      
      @click.command()
      @click.option('--db', default='mysql', type=click.Choice(['mysql', 'redis', 'mongo']))
      def select_db(db):
          click.echo('use %s!' % db)
      

      在这里插入图片描述

      • 有的时候需要输入密码

        • hide_input: 隐藏输入的内容
        • confirmation_prompt: 重复输入
        import click
        
        
        @click.command()
        @click.option('--pwd', prompt=True, hide_input=True, confirmation_prompt=True)
        def input_password(pwd):
            click.echo('password: %s!' % pwd)
        
        
        if __name__ == '__main__':
            input_password()
        

        在这里插入图片描述

      • 或者使用专用的装饰器:click.password_option

        import click
        
        
        @click.command()
        @click.password_option()
        def input_password(password):
            click.echo('password: %s!' % password)
        
        
        if __name__ == '__main__':
            input_password()
        

        在这里插入图片描述

      • 可以使用–或者-来传递参数

        import click
        
        
        @click.command()
        @click.option('--action', '-a', type=click.Choice(['start', 'restart', 'stop']), default='start')
        def run(action):
            click.echo("action:{}".format(action))
        
        
        if __name__ == '__main__':
            run()
        

        在这里插入图片描述

  2. click.argument

    • 使用@click.argument来添加固定参数

      import click
      
      
      @click.command()
      @click.option('--count', default=1, help='number of greetings')
      @click.argument('name')
      def hello(count, name):
          for x in range(count):
              click.echo('Hello %s!' % name)
      
      
      if __name__ == '__main__':
          hello()
      

      在这里插入图片描述

    • 多个参数,直接在脚本后面添加,以空格分隔

      import click
       
      @click.command()
      @click.argument('x')
      @click.argument('y')
      @click.argument('z')
      def show(x, y, z):
          click.echo('x: %s, y: %s, z:%s' % (x, y, z))
       
       
      if __name__ == '__main__':
          show()
      

      在这里插入图片描述

    • nargs吸收多余的参数

      • nargs=-1,表示参数src接收不定量参数值,参数值会以tuple的形式传入函数

      • nargs大于等于1,表示接收nargs个参数

        import click  
         
        @click.command()  
        @click.argument('src', nargs=-1)  
        @click.argument('dst', nargs=1)  
        def move(src, dst):  
            click.echo('move %s to %s' % (src, dst))  
          
          
        if __name__ == '__main__':  
            move()
        

        在这里插入图片描述

  3. click.group

    • 通过group来实现命令行的嵌套,也就是让一个命令行工具具有多个命令

      import click
       
      @click.group()
      def cli():
          click.echo('Hello world')
       
       
      @cli.command()
      def initdb():
          click.echo('Initialized the database')
       
       
      @cli.command()
      def dropdb():
          click.echo('Dropped the database')
       
       
      if __name__ == '__main__':
          cli()
      

      在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值