Argparse 是 Python 標準庫中推薦的命令列解析模組,經常需要解析指令碼參數的話這是個方便的工具模組,擺脫萬年手動 system.argv 。本文和大家分享的就是python中Argparse解析指令碼參數相關內容,一起來看看吧,希望對大家學習python有所協助。 引入 import argparse parser = argparse.ArgumentParser(description=’描述說明,可用於 Help 輸出說明’, add_help=True) parser.parse_args() ArgumentParser 選擇性參數如下: · prog – 此指令碼程式名稱 (預設: sys.argv[0]) · usage – 用法說明 (預設: 根據參數自動產生) · description – 指令碼說明 · epilog – 也是說明,在 help 輸出最後 · parents – 父 Parsers · formatter_class – 輸出協助資訊的定製類 · prefix_chars – 可選首碼參數字元(設定後參數名稱需以此為首碼) · fromfile_prefix_chars – 從檔案讀取可選首碼參數字元 · argument_default – 所有參數的預設值 · conflict_handler – 衝突處理器 · add_help – 是否添加協助 常用方法 add_argument() // test.py import argparse parser = argparse.ArgumentParser() parser.add_argument(’-p’, ’--param’)args = parser.parse_args()print args.param 運行 python test.py -p value or python test.py --param value 即可。 add_argument 可選方法參數如下: · name or flags - 參數的名字. · action - 遇到參數時的動作,預設值是 store。store_const,表示賦值為 const;append,將遇到的值儲存成列表,也就是如果參數重複則會儲存多個值; append_const,將參數規範中定義的一個值儲存到一個列表;count,儲存遇到的次數;此外,也可以繼承 argparse.Action 自訂參數解析; · nargs - 參數的個數,可以是具體的數字,或者是 ? 號,當不指定值時對於 Positional argument 使用 default,對於 Optional argument 使用 const;或者是 * 號,表示 0 或多個參數;或者是 + 號表示 1 或多個參數. · const - action 和 nargs 所需要的常量值. · default - 不指定參數時的預設值. · type - 參數的類型. 如 int、str · choices - 參數允許的值. 如:[‘a’, ‘b’, ‘c’] · required - 選擇性參數是否可以省略(僅針對 optionals ). · help - 參數的協助資訊,當指定為 argparse.SUPPRESS 時表示不顯示該參數的協助資訊. · metavar - 在usage說明中的參數名稱,對於必選參數預設就是參數名稱,對於選擇性參數預設是全大寫的參數名稱. · dest - 解析後的參數名稱,預設情況下,對於選擇性參數選取最長的名稱,中劃線轉換為底線. add_mutually_exclusive_group() 設定衝突參數,當需要設定指定輸入參數只能包含其中一個時即可用此方法。 // test.py parse = argparse.ArgumentParser()group = parse.add_mutually_exclusive_group()group.add_argument("-a", action="store_true")group.add_argument("-b", action="store_true") args = parse.parse_args() 此種情形下 test.py 輸入參數只能包含 a 或 b, a、b 不能同時存在。 add_argument_group() 參數分組設定。當有分組命令的需求時可用,輸入參數將歸於所屬分組下。 parse = argparse.ArgumentParser() some_group = parse.add_argument_group(’Publish plugin’) some_group.add_argument(’-f’ type=str) add_subparsers() 子命令模式,類似 git commit 、 git push 等命令. parse = argparse.ArgumentParser()sub_parse = parse.add_subparsers()# sub_parse opt... Sample 下面由一個使用情境說起。一個指令碼: publish.py ,包含兩個功能:發布和查詢,運行環境有測試服和正式服,發布時需要兩個帳號系統的密碼,查詢時需要一個帳號系統的密碼和版本、渠道參數。那麼指令碼如下,其它見注釋: // publish.py import argparse def get_args(): parse = argparse.ArgumentParser(description=’Publish tools.’, add_help=True) # 操作輸入,使用互斥參數並且參數必須輸入且只能選一個 group = parse.add_mutually_exclusive_group(required=True) # 查詢操作 group.add_argument("-s", "--Search", action="store_true") # 發佈動作 group.add_argument("-p", "--Publish", action="store_true") # 運行環境參數 parse.add_argument(’-e’, ’--Env’, type=str, help=’Running environment’, choices=[’test’, ’product’], default=’test’) # 帳號必選資訊 parse.add_argument(’-a’, ’--ApiAuth’, required=True, type=str, help=’username:password’) # 發布分組命令設定 publish_group = parse.add_argument_group(’Publish’) publish_group.add_argument(’-f’, ’--FtpAuth’, type=str, help=’username:password’) # 查詢分組命令設定 search_group = parse.add_argument_group(’Search’) search_group.add_argument(’-c’, ’--channel’, type=str, help=’channel’) search_group.add_argument(’-v’, ’--versonCode’, type=int, help=’Search verson code’) args = parse.parse_args() return vars(args) args=get_args()print ’opt search?:’, args[’Search’],’ opt publish?:’, args[’Publish’], ’\n’, args publish.py -h 使用協助如下: usage: test.py [-h] (-s | -p) [-e {test,product}] -a APIAUTH [-f FTPAUTH] [-c CHANNEL] [-v HOSTVERSONCODE] Publish tools. optional arguments: -h, --help show this help message and exit -s, --Search -p, --Publish -e {test,product}, --Env {test,product} Running environment -a APIAUTH, --ApiAuth APIAUTH username:password Publish plugin: -f FTPAUTH, --FtpAuth FTPAUTH username:password Search plugin: -c CHANNEL, --channel CHANNEL channel -v VERSONCODE, --VersonCode VERSONCODE Search verson code 使用如下: # 1 publish python publish.py -p -a U -f U# 2 search python publish.py -s -a U -c channel -v 100
來源:Rocko’s blog |