使用Python的`fire`库快速创建命令行工具

170 阅读3分钟

Python作为一种多功能编程语言,允许开发者构建从Web应用到数据分析工具的各种应用。但Python的一个经常被忽略的强大功能是为Python程序创建命令行界面(CLI)。对于开发者和系统管理员来说,CLI工具是极有价值的,因为它们允许自动化并与其他工具集成。传统上,在Python中创建CLI需要大量的样板文件和复杂的参数解析。但Google的fire库为我们提供了方便。

fire库简介

fire是一个Python库,可以自动为你生成命令行接口(CLI)。只需几行代码,你就可以将任何Python脚本或应用程序转化为CLI工具。

安装

使用pip简单安装fire:

pip install fire

基本使用

我们从一个基本示例开始,展示fire的强大功能。

import fire

def greet(name="World"):
    return f"你好,{name}!"

if __name__ == '__main__':
    fire.Fire(greet)

将脚本保存为greet.py并运行它:

python greet.py --name=Python

你将看到输出:

你好,Python!

用类进行进阶

fire不仅仅限于函数。它还可以从对象和类生成CLI。

import fire

class Calculator(object):

    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

if __name__ == '__main__':
    fire.Fire(Calculator)

有了这个保存为calculator.py的脚本,你可以这样做:

python calculator.py add 10 20

这将输出30

使用fire与现有Python脚本结合

已有一个包含多个函数的Python脚本?没问题!你可以将整个脚本而不是单个函数或类转换为CLI。

import fire

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

if __name__ == '__main__':
    fire.Fire()

然后这么使用:

python script.py add 10 5
python script.py subtract 10 5

其它的命令行工具

库名用途特点
argparse解析命令行参数和选项Python标准库的一部分,为参数和选项提供声明式接口。
click创建命令行界面基于装饰器的API,易于创建命令和子命令。
docopt参数解析通过命令行帮助文本来定义CLI接口。
cementCLI应用程序框架提供基础工具创建可扩展、可插拔的应用程序。
cliff创建命令行应用程序用于创建多级命令(如gitdocker)的CLI应用程序。
typer创建CLI应用程序基于Python类型提示,简化了CLI的创建过程。

这些库各有千秋,具体选择哪一个取决于你的需求和偏好。例如,如果你希望最小化依赖并使用Python的标准工具,argparse可能是最佳选择。但如果你想要一个更现代、直观的接口,并且不介意安装额外的依赖,clicktyper可能更适合你。

结论

Google的fire库使在Python中创建CLI变得比以往任何时候都更简单。通过最小的样板,你可以将函数、类甚至整个脚本转化为强大的命令行工具。如果你还没有尝试fire,现在是将其添加到工具箱的好时机!