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,選項名必須是 -- 開頭,如果任何選項必須要有值,後面要加一個等於號 =

單字符參數

執行:

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

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

長格式參數

執行:

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

解析命令行參數

執行:

再測試一個長格式的:

停止解析

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

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