美文网首页Python精选
Python Fire - 一个好用的命令行生成库(一)

Python Fire - 一个好用的命令行生成库(一)

作者: 猫与测试 | 来源:发表于2019-07-26 15:04 被阅读0次

    有没有这样一种感觉:

    学了 Python,好歹也会一门语言了,偶尔想要自己写点小工具来用用,当代码写好后,怎么运行是个问题了。难道,每次要用的时候都要打开编码工具来运行?
    写个带界面的?但是 UI 库都好难学,web 框架更难学。

    那就写个命令行呗!

    但是 Python 自带的命令行用起来并不方便。

    现在有一个更简单方便的库,由 Google 开源的 fire库。

    我们来学习一下怎么用。

    首先安装 fire 库:

    pip install fire
    

    看官方一个简单的例子:
    新建一个文件,取名为 hello.py

    # hello.py
    import fire
    
    # 命令行执行的函数
    def hi(name='world'):
        return f'hello, {name}'
    
    if __name__ == '__main__':
        # 将需要在命令行中执行的函数名传递给 Fire
        fire.Fire(hi)
    

    这是一个简单的例子,将你需要在命令行中执行的函数名传递给 fire 库中 Fire__init__ 方法即可。

    那我们看一下如何使用呢?

    使用命令行运行该脚本。

    $ python hello.py
    hello, world    # 运行 hi 函数,参数取默认值
    $ python hello.py Nemo
    hello, Nemo   # 运行 hi 函数,参数为传入的值 Nemo
    $ python hello.py --name=Nemo
    hello, Nemo   # 指定参数值,参数名=参数值的形式
    $ python hello.py --name Nemo
    hello, Nemo    # 也可以使用空格分隔参数与参数值
    

    通过上面的例子,我们可以看到,只需要引入fire库,并把你写的函数传递给Fire的初始化方法即可,就可以在命令行中使用该函数。

    如果你写的是类呢?

    类似的使用方法:
    新建一个文件 calc.py

    # calc.py
    import fire
    
    class Calculator(object):
        """A simple calculator class."""
        
        def double(self, n):
            return f'n * 2 = { n * 2}'
    
        def sub(self, a, b):
            return f'a - b = { a - b }'
    
    if __name__ == '__main__':
        fire.Fire(Calculator)
    

    将类名传递给 Fire 的初始化方法即可。

    在使用时,需要加上类中的方法名:


    写一个命令行工具就很简单了!

    fire 更复杂的使用,请待下回分解。

    相关文章

      网友评论

        本文标题:Python Fire - 一个好用的命令行生成库(一)

        本文链接:https://www.haomeiwen.com/subject/hqclrctx.html