怎么使用Python命令行库fire

本篇内容主要讲解“怎么使用Python命令行库fire”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python命令行库fire”吧!

创新互联公司主要从事网站制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务惠东,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

一、前言

今天要介绍的 fire则是用一种面向广义对象的方式来玩转命令行,这种对象可以是类、函数、字典、列表等,它更加灵活,也更加简单。

本系列文章默认使用 Python 3 作为解释器进行讲解。若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~

二、介绍

fire 可以根据任何 Python 对象自动生成命令行接口。它有如下特性:

  • 能以简单的方式生成 CLI

  • 是一个开发和调试 Python 代码的实用工具

  • 能将现存代码或别人的代码转换为 CLI

  • 使得在 Bash 和 Python 间的转换变得更容易

  • 通过预先为 REPL 设置所需的模块和变量,使得实用 REPL 更加容易

通过如下命令可快速安装 fire 库:

pip install fire

三、快速开始

回忆下使用 argparse、docopt 和 click 实现命令行程序的步骤:

  • 对于 argparse 来说,要先设置解析器,再定义参数,再解析命令行,最后实现业务逻辑(四步)

  • 对于 docopt 来说,要先定义定义接口描述,再解析命令行,最后实现业务逻辑(三步)

  • 对于 click 来说,就是实现业务逻辑和通过装饰器的方式定义参数(两步)

它们的实现步骤越来越简单,从四步简化到了两步。而今天的主角 fire 只需一步,现业务逻辑就够了。

这简直简单的不可思议,为什么这样做就够了?我们不妨考虑下 Python  中的函数,函数是不是可以对应一个命令行程序,而函数的参数可以对应命令行程序的参数和选项呢?再看看 Python  中的类,一个类是不是可以对应一个命令行程序,而类中的每个实例方法就可以对应子命令,实例方法中的参数就是对应子命令的参数和选项。

这么一想,理论上确实是可以实现的,我们不妨通过下面的示例来看看 fire 是如何让我们通过简单的方式实现命令行程序。

3.1 使用函数

来看这么一个例子:

import firedef hello(name="World"):  return 'Hello  {name}!'.format(name=name)if __name__ == '__main__':   fire.Fire(hello)

在上述例子中定义一个 hello 函数,它接受 name 参数,并且有默认值 "World"。使用 fire.Fire(hello)  即可非常简单快速地实现命令功能,这个命令行就接受 --name 选项,不提供时使用默认值 "World",提供时就按提供的值来。

可在命令行中执行下列命令:

$ python hello.pyHello World!$ python hello.py --name=ProdesireHello  Prodesire!$ python hello.py --helpINFO: Showing help with the  command 'hello.py -- --help'.NAME    hello.pySYNOPSIS    hello.py  FLAGS    --name=NAME

3.2 使用类

使用函数是最简单的方式,如果我们想以更有组织的方式来实现,比如使用类,fire 也是支持的。

import fireclass Calculator(object):  """A simple calculator  class."""  def double(self, number):    return 2 * number  def  triple(self, number):    return 3 * numberif __name__ == '__main__':  fire.Fire(Calculator)

在上述例子中定义一个 Calculator 类,它有两个实例方法 double 和 triple,并且都接受 number 参数,没有默认值。使用  fire.Fire(Calculator) 即可非常简单快速地实现命令功能,这个命令行支持两个子命令 double 和 triple,位置参数 NUMBER  或选项参数 --number

可在命令行中执行下列命令:

$ python calculator.py double 1020$ python calculator.py triple --number=1545$ python calculator.py double --helpINFO: Showing help with the command 'calculator.py double -- --help'.NAME    calculator.py doubleSYNOPSIS    calculator.py double NUMBERPOSITIONAL ARGUMENTS    NUMBERNOTES    You can also use flags syntax for POSITIONAL ARGUMENTS

到此,相信大家对“怎么使用Python命令行库fire”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


本文名称:怎么使用Python命令行库fire
文章来源:http://myzitong.com/article/pisgpi.html