常配合sys模块,用来处理命令行参数
常用方法:
- getopt
- GetoptError
-
getopt(args, shortopts, longopts = [])
用来处理命令行参数;GetoptError
错误处理
args
: 一般格式是配合sys模块的sys.argv
shortopts
: 短格式(-
)加字母 -p
longopts
: 长格式(--
)加单词 --port
#text.py
import sys
import getopt
try:
opts,args = getopt.getopt(sys.argv[1:],"hp:u",["help","port=","url="])
print(opts)
print(args)
except getopt.GetoptError as err:
print(str(err))
运行:
> text.py -h
[('-h', '')]
[]
> text.py -p 80
[('-p', '80')]
[]
> text.py --url https://www.baidu.com
[('--url', 'https://www.baidu.com')]
[]
> text.py 8080
[]
['8080']
> text.py -k
option -k not recognized
opts,args = getopt.getopt(sys.argv[1:],"hp:u",["help","port=","url="])
opts
:
一个两元组的列表,每个元素为:( 选项串, 附加参数) ,如果没有附加参数则为空串'' 。
args
:
一个列表,包含那些没有加
‘-’
或‘--’
的参数,比如:80,p
sys.argv[1:]
:
过滤掉第一个参数(
sys.argv[0]
是当前执行脚本的名字,不算作参数的一部分)
"hp:u"
:
短格式参数,
':'
表示后面带一个参数。hp:u
定义了三个短格式参数:'h' 'p:' 'u'
,'p:'
代表p后面有一个值-p 80
["help","port=","url="]
:
长格式参数,
'='
表示后面带一个参数。--port 8080
#text.py
import sys
import getopt
def usage():
print("Usage: text.py -h help -p port -u URL")
try:
opts,args = getopt.getopt(sys.argv[1:],'hp:u',['help','port=','url='])
except getopt.GetoptError as err:
print(str(err))
usage()
sys.exit(0)
for o,a in opts:
if o in ('-h','--help'):
usage()
sys.exit(0)
elif o in ('-p','--port'):
print("PORT")
elif o in ('-u','--url'):
print("URL")
运行:
> text.py -h
Usage: text.py -h help -p port -u URL
> text.py -p 20
PORT
> text.py --url https://www.bilibili.com
URL
> text.py -p 80 --url https://www.bilibili.com
PORT
URL