python命令行工具:fire

fire 是一个由 Google 开源的 Python 库,它能自动将 Python 代码转换成命令行接口(Command Line Interface,CLI)。fire 库极大地简化了从 Python 函数或类生成命令行工具的过程。

特性

  • 易用性:fire 是为了简化命令行工具的创建而设计的,它可以自动从任何 Python 对象生成命令行接口。
  • 自动生成帮助:fire 自动生成命令和帮助文档,用户可以通过命令行访问这些帮助信息。
  • 交互模式:fire 支持一个交互模式,使用户可以在命令行中探索代码。
  • 无需预先定义参数:与许多其他命令行工具不同,使用 fire 时无需预先定义参数,它会自动处理函数的参数。

使用方式

安装 fire 非常简单,只需使用 pippip 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("抓取百度账户信息")

 

posted @ 2024-04-15 20:09  一路向北321  阅读(620)  评论(0编辑  收藏  举报