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 參數中。
閱讀更多 趣喜歡編程 的文章