argparse --- 命令列選項、引數和子命令的剖析器¶
在 3.2 版被加入.
原始碼:Lib/argparse.py
備註
雖然 argparse 是實作基本命令列應用程式時預設推薦的標準函式庫模組,但如果開發者對命令列應用程式的行為有更精確的要求,可能會發現它無法提供足夠的控制程度。當 argparse 不支援應用程式所需的行為時(例如完全停用交錯選項與位置引數的支援,或是允許以 - 開頭但可能與其他已定義選項相同的選項參數值),請參閱選擇一個命令列參數剖析函式庫以了解替代方案。
argparse 模組使得撰寫使用者友善的命令列介面變得容易。程式定義它需要什麼引數,而 argparse 會找出如何從 sys.argv 中剖析這些引數。argparse 模組也會自動產生說明和用法訊息。當使用者向程式提供無效引數時,此模組也會發出錯誤。
argparse 模組對命令列介面的支援是圍繞 argparse.ArgumentParser 的實例建構的。它是引數規格的容器,並具有適用於整個剖析器的選項:
parser = argparse.ArgumentParser(
prog='ProgramName',
description='What the program does',
epilog='Text at the bottom of help')
ArgumentParser.add_argument() 方法會將個別的引數規格附加到剖析器。它支援位置引數、接受值的選項以及開關旗標::
parser.add_argument('filename') # 位置引數
parser.add_argument('-c', '--count') # 接收一個值的選項
parser.add_argument('-v', '--verbose',
action='store_true') # 開關旗標
ArgumentParser.parse_args() 方法會執行剖析器,並將擷取的資料放入一個 argparse.Namespace 物件中::
args = parser.parse_args()
print(args.filename, args.count, args.verbose)
備註
如果你在尋找如何將 optparse 程式碼升級到 argparse 的指南,請參閱升級 Optparse 程式碼。
ArgumentParser 物件¶
- class argparse.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, allow_abbrev=True, exit_on_error=True, *, suggest_on_error=False, color=True)¶
建立一個新的
ArgumentParser物件。所有參數都應該作為關鍵字引數傳入。每個參數在下面都有更詳細的描述,簡而言之它們是:prog - 程式的名稱(預設值:從
__main__模組屬性和sys.argv[0]產生)usage - 描述程式用法的字串(預設值:從新增到剖析器的引數產生)
description - 引數說明之前要顯示的文字(預設值:無文字)
epilog - 引數說明之後要顯示的文字(預設值:無文字)
parents - 一個
ArgumentParser物件的串列,其引數也應該被包含formatter_class - 用於自訂幫助說明輸出的類別
prefix_chars - 前綴可選引數的字元集合(預設值:'-')
fromfile_prefix_chars - 前綴檔案的字元集合,額外引數將從這些檔案中讀取(預設值:
None)argument_default - 引數的全域預設值(預設值:
None)conflict_handler - 解決衝突可選引數的策略(通常不需要)
add_help - 加入一個
-h/--help選項到剖析器(預設值:True)allow_abbrev - 允許長選項被縮寫,只要縮寫是無歧義的(預設值:
True)exit_on_error - 決定
ArgumentParser在發生錯誤時是否帶著錯誤資訊退出。(預設值:True)suggest_on_error - 啟用對拼錯的引數選擇和子剖析器名稱的建議(預設值:
False)color - 允許彩色輸出(預設值:
True)
在 3.5 版的變更: 新增 allow_abbrev 參數。