getopt
模塊用於解析腳本參數。python
解析命令行選項及參數列表。sql
args:要解析的參數列表,但不包括當前執行的python腳本名稱,通常等同於sys.argv[1:]
。函數
shortopts:要識別的短選項字符串,若是後接:
表示須要給定參數。如ab:c:
,表示識別-a
, -b
和-c
的短選項,其中-b
和-c
須要後接參數。若是不須要短選項,能夠設置爲空字符串。命令行
longopts:要識別的長選項列表(不包括--
前綴),長選項若是後接=
表示須要給定參數,不支持可選參數。如["help", "user=", "password="]
,表示識別--help
, --user=root
, --password=123456
的長選項。code
函數返回值由兩個元素組成。第一個是(option, value)
元組的列表,第二個是args剝離短選項及其參數和長選項及其參數以後剩餘的參數列表。(option, value)
元組中的option表示包含-
或--
前綴的選項,value表示該option對應的參數,能夠爲空字符串表示無參數。字符串
import getopt # 模擬向MySQL的test庫導入tb_country.sql的命令行 args = "-uroot -p --host=127.0.0.1 --port=3306 --verbose -Dtest < tb_country.sql".split() options, arg = getopt.getopt(args, "u:pD:", ["host=", "port=", "verbose"]) print(arg) # ['<', 'tb_country.sql'] for option in options: print(option) # ('-u', 'root') # ('-p', '') # ('--host', '127.0.0.1') # ('--port', '3306') # ('--verbose', '') # ('-D', 'test')
一旦遇到非選項參數,將中止選項解析,從該非選項參數開始的全部參數所有視爲返回值中的第二個元素get
import getopt args = "-a root 123456 -b --opt1 --opt2".split() options, arg = getopt.getopt(args, "ab", ["opt1", "opt2"]) print(arg) # ['root', '123456', '-b', '--opt1', '--opt2'] print(options) # [('-a', '')]
和getopt()
相似,但默認使用GNU風格的選項解析模式,這意味着選項參數和非選項參數能夠混合,而getopt()
會在遇到第一個非選項參數時中止解析。it
若是shortopts的首字符爲+
,或者設置了環境變量POSIXLY_CORRECT
,一樣會在遇到第一個非選項參數時中止解析。io
getopt.error
異常的別名。如下幾種狀況將拋出此異常:a)
參數列表中存在不能識別的選項b)
某個須要傳值的選項沒有給定值c)
傳遞了值給不須要參數的長選項。test
屬性msg
和opt
分別表示錯誤信息和相關選項,opt可能爲空字符串。