常配合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