命令行参数怎么输入_太好用了!谷歌开源的命令行接口工具fire
大家使用最多的命令行工具應該是pip了,pip提供了很多的命令行參數和選項,我們在終端使用pip install --help命令可以查看install子命令的幫助文檔。
可以看到,除了最常用的pip install package命令,我們還可以附加很多可選選項來控制pip install命令的行為。例如:-r選項可以指定從一個requirements.txt的文件安裝Python依賴包,--no-deps標志可以讓pip在安裝包的時候禁用自動安裝依賴包的行為。
命令行接口的基礎知識
命令行接口通常以可執(zhí)行文件的名稱開頭。我們只需在控制臺中輸入它的名稱,然后訪問腳本的主入口點,例如pip。
我們可以通過命令行,將參數傳遞給腳本,它們可以是:
?Arguments (參數):這是傳遞給腳本的必需參數。如果您不提供它,則CLI會遇到錯誤。例如,pandas是此命令中的參數:pip install pandas。?Options (選項):顧名思義,它是一個可選參數,通常包含一個名稱和一個值對,例如pip install pandas --cache-dir ./my-cache-dir。就是指定了./my-cache-dir作為應使用的緩存目錄。?Flags (標志):這是一個特殊的選項參數,它告訴腳本啟用或禁用某些行為。最常見的可能是--help。
為什么需要命令行接口?
想象一下,如果pip沒有提供一個命令行接口,每次我們安裝一個包的時候,還要去代碼中手動修改我們要安裝的包名不是?是不是非常的繁瑣?
因此,當代碼需要頻繁的修改某些參數的時候,使用命令行接口可以將參數和代碼分離開來,從而讓你的代碼更加簡潔,適用范圍更廣。
Python中有很多可以讓人輕松編寫用戶友好的命令行接口工具,如標準庫中的argparse。然而在實際使用過程中發(fā)現,用argparse做命令行接口,需要創(chuàng)建解析器、定義參數、解析參數等3個步驟,無形中寫了很多樣本代碼。
import argparse# argparse需要手動定義和解析參數parser = argparse.ArgumentParser(description='Process some integers.')parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')args = parser.parse_args()print(args.accumulate(args.integers))相比之下,谷歌開源了fire命令行工具就簡單的多了,很多情況下,只需要一行代碼就搞定了。接下來,我們來看fire的基本用法!
fire的基本用法
fire是谷歌開源的一款命令行工具,支持從任意的Python對象自動生成命令行接口,與標準庫中的argparse等工具相比,更加的簡潔高效。
假設我們有一個計算2個數值的函數,接收兩個位置參數x和y,代碼如下:
sum.py
import firedef sum(x,y): """兩個數值的加法求和計算 Args: x (int): 第一個數值輸入 y (int): 第二個數值輸入 Returns: int: 求和計算結果 """ return x+y現在,我們想利用fire將上面的函數生成一個命令行接口,只需在sum.py底部再加入下面2行代碼:
fire.py
if __name__ == "__main__": fire.Fire(sum)現在,我們在執(zhí)行sum.py腳本就可以帶上兩個命令行參數x和y了。
# root @ MyMac-Pro in ~/Desktop [14:07:23] $ python sum.py --x=1 --y=2上面提到過了fire使用的時候,不需要像argparse一樣,需要定義參數、解析參數,十分的方便,fire還有提供了一個好用的功能是,fire會讀取DocString字符串,自動生成命令行接口的文檔,在命令行使用--help就可以查看。
查看sum.py的幫助文檔:
# root @ MyMac-Pro in ~/Desktop [14:07:23] $ python sum.py --help輸出的命令行接口的幫助文檔:
NAME sum.py - 兩個數值的加法求和計算SYNOPSIS sum.py X YDESCRIPTION 兩個數值的加法求和計算POSITIONAL ARGUMENTS X 第一個數值輸入 Y 第二個數值輸入NOTES You can also use flags syntax for POSITIONAL ARGUMENTS(END)問:fire只能用在函數上面嗎?
并非如此,fire可以用在模塊、類、方法、函數等任意的對象,感興趣的同學可以查看官方文檔:https://github.com/google/python-fire/blob/master/docs/using-cli.md,了解fire更多的特性!
推薦閱讀
???竟有如此沙雕的代碼注釋?頭給我笑掉了!???又跌!6月全國程序員工資新統(tǒng)計,太扎心!???面試了一個工作 4 年的程序員,還不如個應屆生...???好險!差點要寫一個300行的 if-else!???keras如何多輸入多輸出,以及中間層輸出
歡迎關注我的公眾號“數據科學雜談”,原創(chuàng)技術文章第一時間推送。
點個在看,是我繼續(xù)原創(chuàng)的動力!總結
以上是生活随笔為你收集整理的命令行参数怎么输入_太好用了!谷歌开源的命令行接口工具fire的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: goland 方法注释_goland 设
- 下一篇: 如何看创建媒体日期_汽车各零部件也有身份