python庫(kù)fire使用教程
1.簡(jiǎn)介
目前python命令行解析庫(kù)用過(guò)的有:argparse(python自帶)、click(Flask作者寫的)
但二者相比f(wàn)ire這個(gè)庫(kù),用起來(lái)都不夠 “簡(jiǎn)單”,fire一行代碼能把函數(shù)導(dǎo)出到命令行窗口。
argparse用法示例
# arg_test.py import argparse def counter(file_type=None): return {file_type: 100} # 初始化解析器 parser = argparse.ArgumentParser() # 定義參數(shù) parser.add_argument("-f", "--file", help="統(tǒng)計(jì)指定文件類型") # 解析 args = parser.parse_args() print(counter(args.file))
運(yùn)行:
$ python arg_test.py -f python {'python': 100}
click用法示例
# firetest.py import click @click.command() @click.option("-f", "--file", help="統(tǒng)計(jì)制定文件類型") def counter(file=None): click.echo({file: 100}) if __name__ == '__main__': print(counter())
運(yùn)行:
$ python firetest.py -f python {u'python': 100}
2. fire安裝
# pip安裝:pip install fire # conda安裝:conda install fire -c conda-forge # 源碼安裝: git拿到代碼,執(zhí)行:python setup.py install
3. fire使用示例
fire.Fire()
直接在程序中調(diào)用 fire.Fire(),不需要修改目標(biāo)函數(shù),fire 會(huì)把當(dāng)前模塊下的所有對(duì)象導(dǎo)出到命令行中
# firetest.py import fire def foo(name): return 'foo {name}!'.format(name=name) def bar(name): return "bar {name}".format(name=name) if __name__ == '__main__': fire.Fire()
運(yùn)行:
# 調(diào)用方式:python [文件名] [函數(shù)名] [參數(shù)] # 函數(shù)名后面直接跟參數(shù)值 $ python firetest.py foo hello foo hello! # 也可以顯示地先指定參數(shù)名,再跟參數(shù)值 $ python firetest.py bar --name hello bar hello!
fire.Fire(<function>)
可以指定某個(gè)函數(shù)導(dǎo)出到命令行
import fire def foo(name): return 'foo {name}!'.format(name=name) if __name__ == '__main__': fire.Fire(foo)
運(yùn)行:
# 調(diào)用方式:python [函數(shù)名] [參數(shù)] $ python firetest.py hello foo hello!
當(dāng) Fire 接收函數(shù) foo 作為參數(shù)時(shí),只加載 foo 函數(shù)到命令行中,此時(shí),在命令行中運(yùn)行時(shí)也無(wú)需再指定函數(shù)名字,只需要指定參數(shù)就好。
fire.Fire(<dict>)
Fire 不僅可以接收函數(shù),還可以接收字典對(duì)象作為參數(shù),可在字典中配置那些函數(shù)需要導(dǎo)出到命令行中。
例如,有加減乘3個(gè)函數(shù),我們可以選擇性的選擇其中2個(gè)導(dǎo)出到命令行:
import fire def add(x, y): return x + y def multiply(x, y): return x * y def subtract(x, y): return x - y if __name__ == '__main__': fire.Fire({ 'add': add, 'subtract': subtract, })
運(yùn)行:
$ python firetest.py add 1 4 5 $ python firetest.py subtract 1 4 -3 $ python firetest.py multiply 1 4 # multiply 會(huì)報(bào)錯(cuò),因?yàn)闆](méi)有導(dǎo)出
fire.Fire(<object>)
還可以接收類的實(shí)例對(duì)象
import fire class Calculator(object): def add(self, x, y): return x + y def multiply(self, x, y): return x * y if __name__ == '__main__': calculator = Calculator() fire.Fire(calculator)
運(yùn)行:
$ python firetest.py add 10 20 30 $ python firetest.py multiply 10 20 200
到此這篇關(guān)于python庫(kù)fire使用教程的文章就介紹到這了,更多相關(guān)python fire內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python多線程threading.Lock鎖用法實(shí)例
這篇文章主要介紹了python多線程threading.Lock鎖用法,以實(shí)例形式對(duì)python鎖的用法進(jìn)行了較為詳細(xì)的分析,需要的朋友可以參考下2014-11-11Django contrib auth authenticate函數(shù)源碼解析
這篇文章主要介紹了Django contrib auth authenticate函數(shù)源碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Python Matplotlib繪制條形圖的全過(guò)程
Python畫圖主要用到matplotlib這個(gè)庫(kù),具體來(lái)說(shuō)是pylab和pyplot這兩個(gè)子庫(kù),這兩個(gè)庫(kù)可以滿足基本的畫圖需求,下面這篇文章主要給大家介紹了關(guān)于Python Matplotlib繪制條形圖的相關(guān)資料,需要的朋友可以參考下2021-10-10

教你漂亮打印Pandas DataFrames和Series