一個“牛逼”的 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章