一个“牛逼”的 Python 命令行解析库-fire

在 Python 中,命令行解析库有非常多的选择方案,系统自带的 模块有 argparse,有 Flask 作者写的 click,但是 argparse 使用起来啰嗦, 要经历解析器初始化、参数定义、解析一套流程。例如:

# -*- coding: utf-8 -*-
# arg_test.py

import argparse

def counter(file_type=None):
    return {file_type: 100}

# 初始化解析器
parser = argparse.ArgumentParser()
# 定义参数
parser.add_argument("-f", "--file", help="统计指定文件类型")
# 解析
args = parser.parse_args()
print(counter(args.file))

运行:

$ python arg_test.py -f python
{'python': 100}

而 click 则是以装饰器的形式作用在目标函数中,要侵入函数本身,本质上还是对 argparse 的一种改进,并没有太多创新,算是一种改良作品。

# -*- coding: utf-8 -*-

import argparse
import click

@click.command()
@click.option("-f", "--file", help="统计制定文件类型")
def counter(file=None):
    click.echo({file: 100})

if __name__ == '__main__':
    print(counter())

运行:

$ python firetest.py -f python
{u'python': 100}

接下来要介绍的这个命令行解析工具非常牛逼,把命令行工具做到了极致,算是一种颠覆式创新,一行代码能把函数导出到命令行窗口,这个工具叫Python-fire,可能经常写命令行工具的人知道,该项目是 Google 开源的 Python 库(可能是 Google 工程师的 Side Project,因为项目主页申明说它不是 Google 官方项目),名字就像一团?。该库是对argparse库的进一步封装,用起来非常方便,灵活和高效。

参考
  1. https://mp.weixin.qq.com/s/lMOieL_RFRHsh5OW4G4axg
  2. https://blog.csdn.net/qq_17550379/article/details/79943740
  3. https://blog.csdn.net/u010099080/article/details/70332074
  4. https://github.com/google/python-fire/blob/master/docs/guide.md
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章