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 教程。