一、快速介绍
来一波官方介绍。
- Python Fire是一个库,用于从任何Python对象自动生成命令行接口。
- 是用python创建CLI的一种简单方法。
- 是开发和调试Python代码的一个有用工具。
- Python Fire帮助探索现有代码或将其他人的代码转换为CLI。
- 使得Bash和Python之间的转换更加容易。
- 通过使用已经导入和创建的模块和变量来设置REPL, Python Fire使使用Python REPL变得更容易。
没听懂 ???
不是太明白 ???
不要紧,看完本篇就懂了。
二、快速安装
pip install fire conda install fire -c conda-forge
1. git clone https://github.com/google/python-fire.git 2. cd python-fire 3. python setup.py install
Github地址: python-fire
三、快速上手
实践出真知
创建一个test.py文件,写入以下内容
import fire def test(your_var="default_value"): return 'This is a test ! value : %s' % your_var if __name__ == '__main__': fire.Fire(test)
咱们来看一下效果
# 缺省参数 root@node:~# python test.py This is a test ! value : default_value # 关键字参数 root@node:~# python test.py --your_var=newValue This is a test ! value : newValue # 位置参数 root@node:~# python test.py localtionValue This is a test ! value : localtionValue
现在呢,我们反过头来看一下官方介绍的第一行:
Python Fire是一个库,用于从任何Python对象自动生成命令行接口。
注意关键字:任何python对象。这意味着什么?
我们来看一段代码:
import fire boy_name = 'XiaoMing' girl_name = 'XiaoHong' if __name__ == '__main__': fire.Fire()
试一下: python test.py boy_name
是不是明白了些什么。
聊完这 缺省参数 、 关键字参数 、 位置参数 ,当然不能少了 * args 和 ** kwargs .
还是来看代码示例:
import fire def run(*args): arg_list = list(args) return ' | '.join(arg_list) if __name__ == '__main__': fire.Fire(run)
跑一下就懂啦
root@node:~# python test.py run qwe rty uio asd fgh qwe | rty | uio | asd | fgh
官方给的示例是这个样子的~~~
import fire def order_by_length(*items): """Orders items by length, breaking ties alphabetically.""" sorted_items = sorted(items, key=lambda item: (len(str(item)), str(item))) return ' '.join(sorted_items) if __name__ == '__main__': fire.Fire(order_by_length)
就是加了个长度和字母顺序的排序,来跑一下,看一下效果:
$ python example.py dog cat elephant cat dog elephant
除此之外呢,我们