在 Python 中,命令行解析库有非常多的选择方案,系统自带的 模块有 argparse,有 Flask 作者写的 click,但是 argparse 使用起来啰嗦, 要经历解析器初始化、参数定义、解析一套流程。例如:
![](https://img.haomeiwen.com/i13717038/9923ee0b92c875d9.png)
运行:
![](https://img.haomeiwen.com/i13717038/db446d2d9c1d921a.png)
而 click 则是以装饰器的形式作用在目标函数中,要侵入函数本身,本质上还是对 argparse 的一种改进,并没有太多创新,算是一种改良作品
![](https://img.haomeiwen.com/i13717038/719a68b2305b61e7.png)
运行:
![](https://img.haomeiwen.com/i13717038/4f8c503669840b0c.png)
接下来要介绍的这个命令行解析工具非常牛逼,把命令行工具做到了极致,算是一种颠覆式创新,一行代码能把函数导出到命令行窗口,这个工具叫Python-fire,可能经常写命令行工具的人知道,该项目是 Google 开源的 Python 库(可能是 Google 工程师的 Side Project,因为项目主页申明说它不是 Google 官方项目),名字就像一团🔥。
安装
pip install fire
用法1: fire.Fire()
直接在程序中调用 fire.Fire(),不需要修改目标函数,fire 会把当前模块下的所有对象导出到命令行中
![](https://img.haomeiwen.com/i13717038/22393959131a4603.png)
运行:
![](https://img.haomeiwen.com/i13717038/0459436b3a27d60e.png)
用法2: fire.Fire(<fn>)
Fire 可以指定某个函数导出到命令行
![](https://img.haomeiwen.com/i13717038/8b04cfe0fcd40798.png)
运行:
![](https://img.haomeiwen.com/i13717038/6e669140d62aad5f.png)
当 Fire 接收函数 foo 作为参数时,只加载 foo 函数到命令行中,此时,在命令行中运行时也无需再指定函数名字,只需要指定参数就好。
用法3:fire.Fire(<dict>)
Fire 不仅可以接收函数,还可以接收字典对象作为参数,可在字典中配置那些函数需要导出到命令行中。例如,有加减乘3个函数,我们可以选择性的选择其中2个导出到命令行:
![](https://img.haomeiwen.com/i13717038/f343e755920e9a75.png)
运行:
![](https://img.haomeiwen.com/i13717038/48b7d033e3970598.png)
用法4:fire.Fire(<object>)
Fire 还可以接收类的实例对象
![](https://img.haomeiwen.com/i13717038/1108ea78712e21a0.png)
使用方式还是和前面的一样
![](https://img.haomeiwen.com/i13717038/a44a5977b63eb1fb.png)
网友评论