背景
最近一直訓(xùn)練模型,進行模型調(diào)參比較,但是隨著模型參數(shù)多起來了,想獲得不同參數(shù)模型結(jié)果也越來越麻煩。看看前輩以及github上開源項目的代碼后,感覺這個感覺學(xué)到了很多。讓你的python程序輸入?yún)?shù)更像Linux那樣輸入,之前使用sys.argv,看到這個之后感覺太low了。這個就是 Python 標(biāo)準(zhǔn)庫的一部分:Argparse[1]。那么下面讓我們看看他是多么方便。
1 入門操作
由于這個包是Python標(biāo)準(zhǔn)庫中的一部分,所以就不用安裝了,直接使用即可。下面結(jié)合文章argparse基本用法[2]和自己的理解書寫如下程序:
運行方式:linux系統(tǒng)使用比較多的還是命令,這里我也在終端里運行程序,如下是使用默認參數(shù)運行:
無參數(shù)運行
有參運行如下:
有參運行
看起來是不是挺有意思的。在上面的代碼中,使用argparse.ArgumentParser構(gòu)建一個參數(shù)解析器,其實也就是創(chuàng)建一個相關(guān)對象,description描述了這個解析器,在命令行中使用-h(--help)命令就可以看到,如下:
幫助文檔
是不是很清晰。
使用這個參數(shù)解析器得有一些我們需要的參數(shù),那么就使用parser.add_argument()方法去定義一些。上面的例子就是增加了兩個參數(shù):name, job。其中'-n'、'--name'都表示一個參數(shù),而default是運行程序時不輸入對應(yīng)參數(shù)值所啟用的值。現(xiàn)在相信你對這個有一定的了解了。下面我們再深入一下。
2 挖掘argparse更多功能
當(dāng)然,上面的內(nèi)容能夠應(yīng)付日常中一些任務(wù)。了解更多的內(nèi)容,也會讓我們事半功倍。下面的內(nèi)容參考了argparse簡要用法總結(jié)[3]部分內(nèi)容,特此感謝。主要介紹parser.add_argument()中的其他參數(shù),default就不再介紹了。
2.1 required:表示這個參數(shù)是否一定需要設(shè)置
如果設(shè)置了required=True,則在實際運行的時候不設(shè)置該參數(shù)將報錯,在上面的程序上添加如下代碼:
當(dāng)不輸入值時,則有:
必要參數(shù)
2.2 type: 參數(shù)類型
命令參數(shù)是傳給其他功能模型使用,不同的功能模型則需要不同類型的數(shù)據(jù)輸入,可以通過設(shè)置type直接將輸入的數(shù)據(jù)轉(zhuǎn)換成對應(yīng)類型的數(shù)據(jù)(前提輸入的數(shù)據(jù)格式就滿足轉(zhuǎn)換要求),修改need參數(shù)的代碼如下:
運行查看:
指定參數(shù)類型
2.3 choices:參數(shù)值只能從幾個選項里面選擇
有時為了更加人性化提示用戶使用,可以提升用戶輸入哪些值,慢慢地感覺到了Linux的味道了。現(xiàn)在我們修改need參數(shù)的代碼如下:
使用-h命令查看修改后的樣子:
幫助命令
可以看到,need參數(shù)的選擇項。具體效果,朋友們可以自行試試,這里不費篇幅展示了,以下是輸入選擇范圍外的結(jié)果。
選擇范圍外結(jié)果
2.4 dest:修改程序內(nèi)部獲取值方法
在命令行中輸入的命令是-ne等形式把參數(shù)傳入到程序,程序可通過其他屬性獲取對應(yīng)參數(shù)值,就是dest,修改need參數(shù)如下:
運行:
獲取真實值
上面還修改打印語句為:
3 總結(jié)
argparse是一個全面的參數(shù)處理庫,功能比較強大,內(nèi)容也比較多,暫時就介紹這么多吧。更多實際需要的功能,我們就根據(jù)需要查看官方文檔以及網(wǎng)上的其他資料吧。
[1]Argparse: https://docs.python.org/zh-cn/3.7/howto/argparse.html
[2]argparse基本用法: https://blog.csdn.net/yy_diego/article/details/82851661
[3]argparse簡要用法總結(jié): http://vra.github.io/2017/12/02/argparse-usage/
責(zé)任編輯:xj
原文標(biāo)題:讓Python程序參數(shù)輸入更像Linux命令——argparse
文章出處:【微信公眾號:自然語言處理愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
Linux
+關(guān)注
關(guān)注
87文章
11319瀏覽量
209832 -
python
+關(guān)注
關(guān)注
56文章
4798瀏覽量
84810
原文標(biāo)題:讓Python程序參數(shù)輸入更像Linux命令——argparse
文章出處:【微信號:NLP_lover,微信公眾號:自然語言處理愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論