python模塊之getopt(腳本參數解析)

getopt模塊用於解析腳本參數。python

getopt.getopt(args, shortopts, longopts=[])

解析命令行選項及參數列表。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(args, shortopts, longopts=[])

getopt()相似,但默認使用GNU風格的選項解析模式,這意味着選項參數和非選項參數能夠混合,而getopt()會在遇到第一個非選項參數時中止解析。it

若是shortopts的首字符爲+,或者設置了環境變量POSIXLY_CORRECT,一樣會在遇到第一個非選項參數時中止解析。io

exception getopt.GetoptError

getopt.error異常的別名。如下幾種狀況將拋出此異常:a)參數列表中存在不能識別的選項b)某個須要傳值的選項沒有給定值c)傳遞了值給不須要參數的長選項。test

屬性msgopt分別表示錯誤信息和相關選項,opt可能爲空字符串。

相關文章
相關標籤/搜索