python庫使用Fire庫生成命令行參數(shù)
牛逼的python庫-使用Fire庫生成命令行參數(shù)
Python Fire是一個開源庫,它可以將任何Python對象轉換為命令行界面。它可以幫助開發(fā)人員快速創(chuàng)建命令行界面,而無需編寫大量的代碼。Fire的主要功能是將Python對象轉換為命令行界面,這使得開發(fā)人員可以使用命令行界面來調用Python函數(shù)。
庫的使用非常簡單。首先,您需要安裝Fire庫。您可以使用pip命令來安裝它:
pip install fire
安裝完成后,您可以將任何Python對象轉換為命令行界面。例如,您可以將一個簡單的Python函數(shù)轉換為命令行界面:
import fire def hello(name='world'): return f'Hello {name}!' if __name__ == '__main__': fire.Fire(hello)
在上面的示例中,我們定義了一個名為hello的函數(shù),并使用Fire庫將其轉換為命令行界面?,F(xiàn)在,您可以在終端中運行以下命令:
python hello.py --name=John
這將輸出以下內容:
Hello John!
Fire庫還支持將類轉換為命令行界面。例如,您可以將一個簡單的類轉換為命令行界面:
import fire class Calculator: def add(self, x,): return x + y if __name__ == '__main__': fire.Fire(Calculator)
在上面的示例中,我們定義了一個名為Calculator的類,并使用Fire庫將其轉換為命令行界面。現(xiàn)在,您可以在終端中運行以下命令:
python calculator.py add --x=2 --y=3
這將輸出以下內容:
5
總之,F(xiàn)ire庫是一個非常有用的工具,它可以幫助開發(fā)人員快速創(chuàng)建命令行界面。它非常易于使用,并且可以將任何Python對象轉換為命令行界面。
補充:
Python Fire:更加靈活的命令行參數(shù)
之前介紹過Python
的Fire
庫,一個用來生成命令行工具的的庫。
請參考:Python Fire:自動生成命令行接口
今天,針對命令行參數(shù),補充兩種更加靈活的設置方式。
1. *args 型參數(shù)
*args
型的參數(shù)可以接受任意長度的參數(shù)。
比如,模擬一個學校發(fā)送通知的功能:
import fire def notions(school, *names): for name in names: print(f"[{school} 通知] hello {name}") if __name__ == "__main__": fire.Fire(notions)
使用起來很靈活,
$ python.exe .\fire-sample.py NJ大學 小紅 小李 小張 小華 [NJ大學 通知] hello 小紅 [NJ大學 通知] hello 小李 [NJ大學 通知] hello 小張 [NJ大學 通知] hello 小華 $ python.exe .\fire-sample.py --school NJ大學 小紅 小李 小張 [NJ大學 通知] hello 小紅 [NJ大學 通知] hello 小李 [NJ大學 通知] hello 小張 $ python.exe .\fire-sample.py --school NJ大學 小紅 小李 小張 小華 [NJ大學 通知] hello 小紅 [NJ大學 通知] hello 小李 [NJ大學 通知] hello 小張 [NJ大學 通知] hello 小華 $ python.exe .\fire-sample.py 小紅 小李 --school NJ大學 小張 小華 [NJ大學 通知] hello 小紅 [NJ大學 通知] hello 小李 [NJ大學 通知] hello 小張 [NJ大學 通知] hello 小華
從上面使用的示例可看出,
- 可以不輸入?yún)?shù)名稱(比如第一個例子),按照順序第一參數(shù)賦值給
school
,其余的賦值給*names
。 *names
參數(shù)支持不定長度的值school
參數(shù)指定參數(shù)名的話,可以放在任意的位置(比如上面第四個例子)。
2. **kwargs 型參數(shù)
**kwargs
型參數(shù)也是不定長度的,和*args
型參數(shù)不同的地方在于,
使用**kwargs
型參數(shù)時,需要指定參數(shù)名稱。
比如,模擬一個顯示學生成績的功能:
import fire def scores(cls, **students): for k, v in students.items(): print(f"[{cls} 成績] {k}: {v}") if __name__ == "__main__": fire.Fire(scores)
使用示例如下:
$ python .\fire-sample.py 初三1班 --小紅 98 --小李 89 --小王 100 [初三1班 成績] 小紅: 98 [初三1班 成績] 小李: 89 [初三1班 成績] 小王: 100 $ python .\fire-sample.py --小紅 98 --小李 89 --小王 100 初三1班 [初三1班 成績] 小紅: 98 [初三1班 成績] 小李: 89 [初三1班 成績] 小王: 100 $ python .\fire-sample.py --小紅 98 --小李 89 --小王 100 --cls 初三1班 [初三1班 成績] 小紅: 98 [初三1班 成績] 小李: 89 [初三1班 成績] 小王: 100
cls
參數(shù)可以不指定名稱,也可以放在任意位置上。**students
參數(shù)則必須指定參數(shù)名稱,但參數(shù)名稱不固定,參數(shù)的個數(shù)也不固定。
3. 總結
*args
型和**kwargs
型參數(shù)可以有效的緩解命令行工具靈活性不足的問題。
開發(fā)命令行工具時,根據(jù)自己的場景,使用這兩種類型的參數(shù)可讓命令行工具的接口更加簡潔靈活。
到此這篇關于Python Fire:更加靈活的命令行參數(shù)的文章就介紹到這了,更多相關Python Fire:更加靈活的命令行參數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
對pandas讀取中文unicode的csv和添加行標題的方法詳解
今天小編就為大家分享一篇對pandas讀取中文unicode的csv和添加行標題的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12教你用python將數(shù)據(jù)寫入Excel文件中
Python作為一種腳本語言相較于shell具有更強大的文件處理能力,下面這篇文章主要給大家介紹了關于如何用python將數(shù)據(jù)寫入Excel文件中的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-02-02Python讀取sqlite數(shù)據(jù)庫文件的方法分析
這篇文章主要介紹了Python讀取sqlite數(shù)據(jù)庫文件的方法,結合實例形式分析了Python引入sqlite3模塊操作sqlite數(shù)據(jù)庫的讀取、SQL命令執(zhí)行等相關操作技巧,需要的朋友可以參考下2017-08-08Python使用Pandas對csv文件進行數(shù)據(jù)處理的方法
這篇文章主要介紹了Python使用Pandas對csv文件進行數(shù)據(jù)處理的方法,本文通過實例代碼相結合給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08pytorch之torchvision.transforms圖像變換實例
今天小編就為大家分享一篇pytorch之torchvision.transforms圖像變換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12