Python 中动态 CLI 的简介

pythonserver side programmingprogramming

随着编程世界的发展,了解如何创建命令行界面 (CLI) 现在比以往任何时候都更加重要。由于 Python 的简单性和广泛的库支持,构建动态 CLI 变得非常简单。本文介绍了 Python 中的动态 CLI 构造以及各种示例。

为什么要使用命令行界面?

借助命令行界面,您可以直接与您的程序通信。用户可以通过定义良好的命令和参数提供输入和接收输出,从而成功地与您的程序交互。运行脚本、自动化流程和测试软件都可以从中受益。

用于 CLI 的 Python 库

Python 提供了许多用于构建动态 CLI 的库。其中,argparse、click 和 fire 是最常用的。 click 和 fire 库将是本文的主要主题。

开始使用 Click

一个名为 Click 的 Python 模块可以轻松构建令人惊叹的命令行界面。使用 pip 安装 click 

pip install click

示例 1:基本 Click CLI

这是一个使用 click 的简单 CLI 程序 

import click

@click.command()
@click.option('--name', default='World', help='Who to greet.')
def greet(name):
   click.echo(f'Hello {name}!')

if __name__ == '__main__':
   greet()

在这种情况下,greet 命令接受命令行选项 --name。

开始使用 Fire

Fire 是一个用于自动从任何 Python 对象创建命令行界面 (CLI) 的库。使用 pip 安装 fire 

pip install fire

示例 2:基本 Fire CLI

这是一个使用 fire 的简单 CLI 程序 

import fire

class Greeter(object):

  def greet(self, name='World'):
     return f'Hello {name}!'

def main():
   fire.Fire(Greeter)

if __name__ == '__main__':
   main()

在这种情况下,Greeter 命令接受命令行选项名称。

创建动态 CLI

动态 CLI 允许命令和选项根据用户输入或外部变量进行更改。

示例 3:动态点击 CLI

以下是基于点击的动态 CLI 的说明 

import click

@click.command()
@click.option('--greeting', default='Hello', help='Greeting to use.')
@click.argument('name')
def greet(greeting, name):
   click.echo(f'{greeting}, {name}!')

if __name__ == '__main__':
   greet()

示例 4:动态火灾 CLI

以下是基于火灾的动态 CLI 的说明 

import fire

class Greeter(object):

  def greet(self, greeting='Hello', name='World'):
     return f'{greeting}, {name}!'

def main():
   fire.Fire(Greeter)

if __name__ == '__main__':
   main()

通过在此动态示例中向greet函数提供输入,可以修改问候语和名称。

示例5:高级Click CLI

可以使用click创建带有多个命令的CLI。团队装饰器 

import click

@click.group()
def cli():
   pass

@cli.command()
@click.option('--name', default='World', help='Who to greet.')
def greet(name):
   click.echo(f'Hello {name}!')

@cli.command()
@click.option('--title', default='Stranger', help='How to address.')
def salute(title):
   click.echo(f'Good day, {title}!')

if __name__ == '__main__':
   cli()

本例中有两个命令:greet 和 salute。每个命令都可以使用其适当的选项调用。

示例 6:高级 Fire CLI

使用 fire,我们可以创建多命令 CLI,类似于使用 click 的方式,只需向我们的类添加更多方法即可 -

import fire

class Conversation(object):

   def greet(self, name='World'):
      return f'Hello {name}!'

   def salute(self, title='Stranger'):
      return f'Good day, {title}!'

def main():
   fire.Fire(Conversation)

if __name__ == '__main__':
   main()

在本例中,我们的 Conversation 类使用了greet 和 salute 技术。对于类中的每个方法,Fire 将创建命令。

结论

Python 为构建动态命令行界面提供了强大的支持,click 和 fire 等包提供了强大的功能来构建可靠、适应性强的 CLI。这些工具让 Python 开发人员可以轻松创建用户友好的交互式 CLI,从简单的单命令脚本到复杂的多命令应用程序。

本文中给出的示例应该可以帮助您了解如何创建基本和复杂的动态 CLI。掌握这些基础知识后,您现在可以开发自己的命令行应用程序来解决一系列用例。

命令行界面在任务自动化、软件测试和系统管理中的重要性使其成为许多开发人员和用户不可或缺的工具。通过充分利用 Python 的库,我们可以构建动态 CLI,


相关文章