目錄
一、預備知識
argparse
是python
用于解析命令行參數和選項得標準模塊,用于代替已經過時得optparse
模塊。argparse
模塊得作用是用于解析命令行參數。
1、安裝
argsparse
是python
得命令行解析得標準模塊,內置于python
,不需要安裝。使用得時候直接:
import argparse
2、使用得一般步驟
這個模塊使用起來十分簡單,就類似于 造(買)個冰箱→在冰箱里面放點食材→需要得時候把食材拿出來做出美味得食物。
它得使用分為三步:
# 1.創建一個解析對象;parser = argparse.ArgumentParser()# 2.然后向該對象中添加你要關注得命令行參數和選項,# 每一個 add_argument 方法對應一個你要關注得參數或選項;parser.add_argument()# 3. 最后調用 parse_args()方法進行解析;parser.parse_args()
另外,關于參數得書寫習慣,有如下幾種:
- 空格分開,最常用,比如
parser.parse_args('-x X'.split())
- 長選項用
=
分開 ( “長”選項名字,即選項得名字多于一個字符),比如parser.parse_args('--foo=FOO'.split())
- ???????短選項可以寫在一起,比如
parser.parse_args('-xX')
二、實操筆記
上面簡要介紹了使用得基本步驟,下面首先詳細介紹涉及到得幾個函數,然后再給一個實例。
1、函數詳解
1.1ArgumentParser
這個函數得作用就是創建一個解析對象(冰箱),下面是它得參數列表:
ArgumentParser(prog=None, usage=None,description=None, epilog=None, parents=[],formatter_class=argparse.HelpFormatter, prefix_chars='-',fromfile_prefix_chars=None, argument_default=None,conflict_handler='error', add_help=True)
參數含義如下所示:
- prog:程序得名字,默認為
sys.argv[0]
,用來在help
信息中描述程序得名稱。 - usage:描述程序用途得字符串
- description:
help
信息前得文字。 - epilog:
help
信息之后得信息 - add_help:設為
False
時,help
信息里面不再顯示-h --help
信息。 - prefix_chars:參數前綴,默認為
-
- ???????fromfile_prefix_chars:前綴字符,放在文件名之前
- argument_default:參數得全局默認值。
- conflict_handler:對沖突得處理方式,默認為返回錯誤“error”。還有“resolve”,智能解決沖突。當用戶給程序添加了兩個一樣得命令參數時,“error”就直接報錯,提醒用戶。而“resolve”則會去掉第一次出現得命令參數重復得部分或者全部(可能是短命令沖突或者全都沖突)。
1.2add_argument
此函數用來指定程序需要接受得命令參數,它得參數列表如下所示:
add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])# 注:[] 表示可選
參數含義如下:
- name or flags:參數有兩種,可選參數和位置參數。
parse_args()
運行時,會用-
來認證可選參數,剩下得即為位置參數。位置參數必選,可選參數可選。 - action:參數動作;
argparse
內置6種動作可以在解析到一個參數時進行觸發:store
保存參數值,可能會先將參數值轉換成另一個數據類型。若沒有顯式指定動作,則默認為該動作。store_const
保存一個被定義為參數規格一部分得值,而不是一個來自參數解析而來得值。這通常用于實現非布爾值得命令行標記。store_ture/store_false
保存相應得布爾值。這兩個動作被用于實現布爾開關。append
將值保存到一個列表中。若參數重復出現,則保存多個值。append_const
將一個定義在參數規格中得值保存到一個列表中。version
打印關于程序得版本信息,然后退出。count
統計參數出現得次數。 - nargs:參數得數量。值可以為整數
N
(N個),*
(任意多個),+
(一個或更多),值為?
時,首先從命令行獲得參數,若沒有則從const
獲得,然后從default
獲得: - dest:參數值就保存為
parse_args()
返回得命名空間對象中名為該dest
參數值得一個屬性。如果提供dest,例如dest="a"
,那么可以通過args.a
訪問該參數 - default:設置參數得默認值
- type:把從命令行輸入得結果轉成設置得類型
- choice:允許得參數值
- required:是否必選
- desk:可作為參數名
- help:參數命令得介紹
2、調用實例
下面給個簡單得示例,只是說明如何調用而已,后續可根據上面對函數得詳細解釋來使其更實用智能。
import argparseparser = argparse.ArgumentParser(description ="This is a Test!")parser.add_argument("type",choices=['scheduler','tool'], help="make application type")parser.add_argument('-c',dest='configurefile',help="configure file")parser.print_help()args = parser.parse_args(["tool","-c","a.ini"])print(args.type)print(args.configurefile)# --------------output------------------usage: draft.py [-h] [-c CONFIGUREFILE] {scheduler,tool}This is a Test!positional arguments: {scheduler,tool} make application typeoptional arguments: -h, --help show this help message and exit -c CONFIGUREFILE configure filetoola.ini
這個簡單得例子就,就創建了一個argparse對象,然后加了兩個參數(不算-h),一個是必選參數
tool
,另一個是可選參數-c
,然后使用dest
將其轉換為參數得一個屬性。
ps:其實一開始筆者遇到了一個問題,一開始筆者在必選參數前加了type
,其實是不用得,對于必選參數直接給值即可。
另外,當有多個必選參數時,需要注意必選參數得順序一定要和加參數得順序保持一致。
可選參數和必選參數可以交換順序,只需保持可選參數與值不要分開,必選參數得相對順序與加參數得順序保持一致即可!
到此這篇關于Python argparse 解析命令行參數模塊詳情得內容就介紹到這了,更多相關Python argparse內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。