Python 模塊 getopt-命令行參數解析

Python 模塊 getopt-命令行參數解析

Python 模塊 getopt 解析命令行參數,它可以解析任意一個序列,例如 sys.argv 參數,然後解析成一個元組序列和一個參數列表。

下面是支持的語法:

  • -a
  • -bval
  • -b val
  • --noarg
  • --witharg=val
  • --witharg val

getopt 比較舊了,建議使用 argparse 模塊來開發新項目

函數參數


getopt() 函數接收三個參數:

  • 第一個是要解析的參數序列,通常解析命令行使用 sys.argv[1:],忽略第一個參數程序名 sys.argv[0]
  • 第二個參數定義了單字符選項,如果選項必須要有選項值的話,需要在字符後加冒號
  • 第三個參數是可選的,是一個序列,定義了要解析的長格式選項,例如 --noarg,選項名必須是 -- 開頭,如果任何選項必須要有值,後面要加一個等於號 =

單字符參數


Python 模塊 getopt-命令行參數解析

執行:

Python 模塊 getopt-命令行參數解析

上例中,第一個參數是要解析的自定義的序列,第二個參數定義了單字符的參數格式,用來解析第一個參數的值。

其中,參數 a 是可選的,參數 b 和 c 必須要給定的值,意思是如果提供了參數 b 和 c 就必須要給值。如果不給值的話,就會觸發異常,例如:getopt.GetoptError: option -c requires argument。

長格式參數


Python 模塊 getopt-命令行參數解析

執行:

Python 模塊 getopt-命令行參數解析

這裡,getopt() 第二個參數為空,不接受單字符參數格式。本例中,參數 noarg 不傳任何參數,參數 foo 後面加了等於號,是必須要傳值的。

解析命令行參數


Python 模塊 getopt-命令行參數解析

執行:

Python 模塊 getopt-命令行參數解析

再測試一個長格式的:

Python 模塊 getopt-命令行參數解析

停止解析


當 getopt() 遇到了 -- 時,後面的參數就不解析了。會保存到返回元組的第二個參數中。

Python 模塊 getopt-命令行參數解析

查看最後一行輸出,-- 後面的參數保存在了 args 參數中。


分享到:


相關文章: