主要參考了網上的一些博文,在複現醫學圖像分割的深度學習論文的時候,發現師兄很喜歡用這個函數,一開始還不是很了解,是以今天來徹底弄明白到底是個啥東西。
定義&用途
argparse是python自帶的指令行參數解析包,可以用來友善地讀取指令行參數,使用比較簡單。
基本架構
采用argparse擷取使用者的名字及年齡,因為比較簡單是以是在linux上用vim編輯器寫的python檔案,檔案命名為:test.py。
import argparse
def main():
p = argparse.ArgumentParser("description="Demo of argparse"")
p.add_argument('-n', '--name', default='Li')
p.add_argument('-y', '-year', default='20')
args = p.parse_args()
print(args)
name = p.name
year = args.year
print('Hello {} {}'.format(name, year))
if __name__ == "__main__":
main()
寫好後儲存退出,執行指令:
python test.py
結果如下:
1. 在上面的代碼中,我們首先是導入了一個名為
argparse
的包,然後使用了argparse包中的一個類
ArgumentParser
生成了一個
parser
對象(參數解析器),即
p
。其中,
description
是用來描述這個參數解析器的用途,當在指令行顯示幫助資訊的時候會看到description描述的資訊。
2. 接着我們使用對象的
add_argument
方法來增加參數。在這段代碼中我們增加了兩個參數
name
和
year
,其中
-n
和
--name
表示同一個參數,
default
表示我們在運作指令的時候如果沒有提供參數,程式會将此值當作參數值。
3. 最後采用對象的
parse_args
方法擷取解析的參數,由結果圖可以看到,
Namespace
中有兩個屬性(或者說成員)。
P.S. 當
'-'
和
'--'
同時出現的時候,系統預設後者為參數名,前者不是,但是在指令行輸入的時候沒有這個區分。
當執行指令:
結果如下圖:
本文主要參考argparse基本用法