python命令行工具点击快速掌握

  

  

写Python的经常要写一些命令行工具,虽然标准库提供有命令行解析工具Argparse,但是写起来非常麻烦,我很少会使用它。命令行工具中用起来最爽的就是点击,它是瓶的团队托盘的开源项目.Click只要很少的代码就可以优雅地创造一个命令行工具,它致力于将创建命令行工具的过程变的快速而有趣。

  

百闻不如一试

  

        pip安装点击      


  

  

创建click_demo。py,写一个最简单的函数

        单击导入   @click.command ()   def hello ():   点击。回声(“Hello World !”)   if __name__==癬_main__”:   你好()      

运行:         python click_demo.py   Hello World !      

装饰器click.command()使函数秒变命令行工具,回声函数的作用等同于打印函数。

  

  

装饰器click.option()可以给命令行函数指定参数

        单击导入      @click.command ()   @click。选项(“——”,默认=1,帮助=按蛴〈问?类型=int)   def你好(数):   ”“”   这是一个简单示例   ”“”   因为我在范围内(数):   点击。回声(“Hello World !”)      if __name__==癬_main__”:   你好()      
      <李>——数:统计是参数的名字   <李>默认值:参数的默认值   <李>类型:给参数指定类型李   <李>帮助:说明文档   
  

执行脚本的时候后面加上参数——帮助就可以查看说明文档。

        python click_demo美元。py——帮助      用法:click_demo。py(选项)      这是一个简单示例      选项:   ——计数整数打印次数   ——帮助显示此消息并退出。      

指定参数:

        在python click_demo。py -数3      你好世界!   你好世界!   Hello World !      


  

  

有些命令行工具在运行的时候要求用户输入信息,可以给选择装饰器指定提示参数

        单击导入      @click.command ()   @click。选项(“——”,默认=1,帮助=按蛴〈问?类型=int)   @click。选项(“-名字”,提示="请输入名字”,帮助=靶彰?   def你好(数、名称):   ”“”   这是一个简单示例   ”“”   因为我在范围内(数):   点击。回声(f 'Hello {name} !”)      if __name__==癬_main__”:   你好()            python click_demo.py美元      请输入名字:lzjun   你好lzjun !      


  

  

点击很重要的一个特性就是它的分组功能,当一个命令行工具的逻辑已经非常复杂的时候,为了解耦,我们需要将不同的逻辑放在不同的命令中,这样既可以避免单个命令行工具函数臃肿来。看个例子:

        # db.py   单击导入      @click.group ()   def db ():   通过      @click.command ()   @click。选项(“-名字”,帮助="用户名”)   def添加(名称):   ”“”   添加用户   :参数名称:   返回:   ”“”   点击。回声(f 'add用户{名称}”)      @click.command ()   @click。选项(“id”,帮助="用户名”)   def删除(id):   ”“”   删除用户   :param id:   返回:   ”“”   点击。回声(f 'delete用户{id}”)      db.add_command(删除)   db.add_command(添加)      if __name__==癬_main__”:   db ()      

这是一个操作数据库DB的命令行工具,提供了添加用户和删除用户的命令行等其它操作,如果所有的业务逻辑全部写在一个函数、维护变得异常困难。

  

@click。组装饰器把函数装饰成为一个集团对象,通过组可以添加很多子命令。

        python db。py——帮助   用法:db。py[选项]命令(ARGS)……      选项:   ——帮助显示此消息并退出。      命令:   加添加用户:参数名称::返回:   删除删除用户:param id:返回:      

从帮助文档中我们看到添加和删除就是两个子命令。瓶框架的烧瓶命令也是一个组命令。

python命令行工具点击快速掌握