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