有没有这样一种感觉:
学了 Python,好歹也会一门语言了,偶尔想要自己写点小工具来用用,当代码写好后,怎么运行是个问题了。难道,每次要用的时候都要打开编码工具来运行?
写个带界面的?但是 UI 库都好难学,web 框架更难学。
那就写个命令行呗!
但是 Python 自带的命令行用起来并不方便。
现在有一个更简单方便的库,由 Google 开源的 fire
库。
我们来学习一下怎么用。
首先安装 fire
库:
pip install fire
看官方一个简单的例子:
新建一个文件,取名为 hello.py
# hello.py
import fire
# 命令行执行的函数
def hi(name='world'):
return f'hello, {name}'
if __name__ == '__main__':
# 将需要在命令行中执行的函数名传递给 Fire
fire.Fire(hi)
这是一个简单的例子,将你需要在命令行中执行的函数名传递给
fire
库中Fire
的__init__
方法即可。
那我们看一下如何使用呢?
使用命令行运行该脚本。
$ python hello.py
hello, world # 运行 hi 函数,参数取默认值
$ python hello.py Nemo
hello, Nemo # 运行 hi 函数,参数为传入的值 Nemo
$ python hello.py --name=Nemo
hello, Nemo # 指定参数值,参数名=参数值的形式
$ python hello.py --name Nemo
hello, Nemo # 也可以使用空格分隔参数与参数值
通过上面的例子,我们可以看到,只需要引入
fire
库,并把你写的函数传递给Fire
的初始化方法即可,就可以在命令行中使用该函数。
如果你写的是类呢?
类似的使用方法:
新建一个文件 calc.py
# calc.py
import fire
class Calculator(object):
"""A simple calculator class."""
def double(self, n):
return f'n * 2 = { n * 2}'
def sub(self, a, b):
return f'a - b = { a - b }'
if __name__ == '__main__':
fire.Fire(Calculator)
将类名传递给 Fire 的初始化方法即可。
在使用时,需要加上类中的方法名:
写一个命令行工具就很简单了!
fire
更复杂的使用,请待下回分解。
网友评论