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