[Python]命令列解析器Argparse的試用手冊

來源:互聯網
上載者:User

Unix系統的一個核心思想是:建立一組小工具,然後通過管道的方式將其組合成大工具。這一思想指導Unix/Linux等成為最為實用的伺服器作業系統。而在編寫Unix/Linux的C/C++程式時,命令列解析器是必不可少的。只有通過命令列參數進行訊息傳遞,才能充分利用管道、Bash指令碼來進行自動化。C++中我最常用的一個命令列解析器是TCLAP。而在Python中,有一個更強大的命令列解析器 ArgParse。

Argparse的使用很簡單,主要有三個步驟:

  1. 建立解析器對象: parser = argparse.ArgumentParser( prog='PROG' )
  2. 添加參數: parser.add_argument(....)
  3. 進行解析: values = parser.parse_args()

Argparse預設是從 sys.argv 中進行解析,但也可以直接解析字串,如
values = parser.parse_args('--foo 1 -x 2 -y 3'.split()),這在調試中很有用。

Argparse的優點主要有:

  • 位置參數:可以不用前置引導符來進行參數設定;
  • 選擇性參數:可指定哪些參數一定要提供,哪些是可選的;
  • 合成協助:只需要在添加參數時給每個參數提供協助說明,程式會自動給出Unix統一命令列協助,其輸出命令為 parser.print_help();
  • 可指定參數格式:通過Argparse給定的標識符 nargs,可指定某個引導符後參數的格式,其中N代表N個,?代表0或1個,*代表0或多個,+代表1或多個;
  • 子命令列;支援多個子命令列解析器(我認為這個功能不是很實用,畢竟Unix工具的目標是小巧實用);
  • 參數類型可定義:這樣可以進行參數類型轉換與檢查,並且可以定義參數調用方式;
  • 自訂調用函數:這是一個進階技巧,其可以按照特定的格式編寫一個回調對象類,這樣在進行解析某個參數時,可自動回調這個對象的某個操作。
  • 限定範圍:通過choices命令可以限定某個參數的取值範圍;
  • 可繼承多個解析器:這個功能很有用,其可以通過多個解析器來產生一個整合的解析器,其可以解析所有的參數;
  • 參數隱藏:利用 argparse.SUPPRESS 常量符,可設定某個參數是協助隱藏還是整體隱藏,這樣可以屏蔽一些進階參數設定;

Google Code 上的ArgParse 有很好的協助文檔,並附加一些參考範例,很值得研究學習。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.