python命令行工具:fire
fire
是一个由 Google 开源的 Python 库,它能自动将 Python 代码转换成命令行接口(Command Line Interface,CLI)。fire
库极大地简化了从 Python 函数或类生成命令行工具的过程。
特性
- 易用性:
fire
是为了简化命令行工具的创建而设计的,它可以自动从任何 Python 对象生成命令行接口。 - 自动生成帮助:
fire
自动生成命令和帮助文档,用户可以通过命令行访问这些帮助信息。 - 交互模式:
fire
支持一个交互模式,使用户可以在命令行中探索代码。 - 无需预先定义参数:与许多其他命令行工具不同,使用
fire
时无需预先定义参数,它会自动处理函数的参数。
使用方式
安装 fire
非常简单,只需使用 pip
:pip install fire
使用举例
1、简单应用:
使用 fire
的基本方式是在你的 Python 脚本中导入 fire
并调用 fire.Fire()
函数。例如:
import fire def hello(name="World"): return f"Hello {name}!" if __name__ == '__main__': fire.Fire(hello)
将这段代码保存为 example.py
并在命令行中运行,就会看到 fire
自动生成的命令行接口。你可以这样调用它:
python example.py --name=Alice
输出将会是:
Hello Alice!
2、高级应用:
fire
还提供了更高级的功能,例如从类生成命令行接口,以及处理嵌套命令。例如,如果你有一个类 Calculator
,它有一个方法 add
,你可以这样使用 fire
:
import fire class Calculator(object): """A simple calculator class.""" def add(self, x, y): return x + y def subtract(self, x, y): return x - y if __name__ == '__main__': fire.Fire(Calculator)
然后在命令行中,你可以调用:
python calculator.py add 10 20
python calculator.py subtract 30 10
这将分别执行 add
和 subtract
方法
3、高级应用:
当你的脚本有很多,你可以分成2个文件:cli.py、cmd.py
cli.py:
import fire
class CommandCenter(object): """命令中心,整合所有命令""" def __init__(self): self.toutiao = TouTiao() self.kuaishou = Kuaishou() self.baidu = Baidu() if __name__ == '__main__': fire.Fire(CommandCenter)
cmd.py:
class TouTiao(object): """头条相关的命令""" def fetch_report(self): # 抓取头条报表的逻辑 print("抓取头条报表") def fetch_account_info(self): # 抓取头条账户信息的逻辑 print("抓取头条账户信息") class Kuaishou(object): """快手相关的命令""" def fetch_report(self): # 抓取快手报表的逻辑 print("抓取快手报表") def fetch_account_info(self): # 抓取快手账户信息的逻辑 print("抓取快手账户信息") class Baidu(object): """百度相关的命令""" def fetch_report(self): # 抓取百度报表的逻辑 print("抓取百度报表") def fetch_account_info(self): # 抓取百度账户信息的逻辑 print("抓取百度账户信息")