Python Fire
最后修改于 2025 年 2 月 22 日
在本文中,我们将展示如何使用 Fire 模块在 Python 中创建命令行界面 (CLI)。
Fire 是一个 Python 库,可以从任何 Python 对象(包括函数、类和模块)自动生成命令行界面 (CLI)。
使用 Fire,您可以轻松地将任何 Python 组件变成 CLI。这使其成为自动化脚本、库和应用程序 CLI 创建的绝佳工具。
简单的 CLI
第一个示例演示了如何使用 Fire 创建一个简单的 CLI。
import fire def greet(name="guest"): return f"Hello, {name}!" if __name__ == '__main__': fire.Fire(greet)
在此程序中,我们定义了一个简单的函数 greet
,它接受一个可选参数 name
。Fire 会自动为该函数生成一个 CLI。
import fire
我们导入 Fire 模块。
def greet(name="guest"): return f"Hello, {name}!"
这是一个向用户致敬的简单函数。name
参数的默认值为“World”。
if __name__ == '__main__': fire.Fire(greet)
我们使用 fire.Fire
将 greet
函数变成 CLI。当脚本运行时,Fire 会根据函数自动生成一个 CLI。
$ python main.py --name=Alice Hello, Alice! $ python main.py Hello, guest!
我们使用和不使用 --name
参数运行脚本。
带类的 CLI
在下一个示例中,我们使用类创建了一个 CLI。
import fire class Calculator: def add(self, a, b): return a + b def subtract(self, a, b): return a - b def multiply(self, a, b): return a * b def divide(self, a, b): return a / b if __name__ == '__main__': fire.Fire(Calculator)
在此程序中,我们定义了一个 Calculator
类,其中包含四个方法:add
、subtract
、multiply
和 divide
。Fire 为该类生成一个 CLI,允许我们从命令行调用这些方法。
class Calculator: def add(self, a, b): return a + b def subtract(self, a, b): return a - b def multiply(self, a, b): return a * b def divide(self, a, b): return a / b
这是具有四种算术方法的 Calculator
类。
if __name__ == '__main__': fire.Fire(Calculator)
我们使用 fire.Fire
将 Calculator
类变成 CLI。Fire 会自动为类中的每个方法生成命令。
我们使用不同的命令和参数运行脚本来执行算术运算。
创建嵌套命令
Fire 还支持嵌套命令,允许您创建更复杂的 CLI。
import fire class Math: def add(self, a, b): return a + b def subtract(self, a, b): return a - b class String: def concat(self, a, b): return a + b def repeat(self, a, times): return a * times class CLI: def __init__(self): self.math = Math() self.string = String() if __name__ == '__main__': fire.Fire(CLI)
在此程序中,我们定义了两个类,Math
和 String
,每个类都有自己的方法。然后,我们创建了一个 CLI
类,该类将这些类实例化为属性。Fire 为每个类生成一个带有嵌套命令的 CLI。
class Math: def add(self, a, b): return a + b def subtract(self, a, b): return a - b class String: def concat(self, a, b): return a + b def repeat(self, a, times): return a * times
这是具有各自方法的 Math
和 String
类。
class CLI: def __init__(self): self.math = Math() self.string = String()
CLI
类将 Math
和 String
类实例化为属性。
if __name__ == '__main__': fire.Fire(CLI)
我们使用 fire.Fire
将 CLI
类变成 CLI。Fire 为 math
和 string
属性生成嵌套命令。
$ python main.py math add 3 5 8 $ python main.py string repeat falcon 3 falconfalconfalcon
我们使用嵌套命令运行脚本,以执行 Math
和 String
类中的操作。
来自字典的 CLI
可以从字典中派生命令。
import fire def add(a, b): return a + b def multiply(a, b): return a * b commands = { 'add': add, 'multiply': multiply, } if __name__ == '__main__': fire.Fire(commands)
我们定义了两个函数。这些函数通过字典映射到命令。
可变数量的参数
当我们定义一个带有前面带有星号 (*) 的参数的函数时,例如 *elements
,这意味着该函数可以接受任意数量的位置参数,然后这些参数会被打包成一个元组。
import fire def sort_elements(*elements): """Sort the given elements.""" sorted_elements = sorted(elements) return sorted_elements def uppercase_elements(*elements): """Convert the given elements to uppercase.""" uppercased_elements = [element.upper() for element in elements] return uppercased_elements commands = { 'sort': sort_elements, 'upper': uppercase_elements, } if __name__ == '__main__': fire.Fire(commands)
该程序有两个函数,用于对其元素进行排序和转换为大写。
$ py main.py sort war atom sky blue say pine atom blue pine say sky war $ python main.py upper war atom sky blue say pine WAR ATOM SKY BLUE SAY PINE
来源
在本文中,我们使用 Python Fire 模块在 Python 中创建了命令行界面 (CLI)。
作者
列出所有 Python 教程。