getopt --- C 风格的命令行选项解析器

https://www.jianshu.com/p/6f7078058023

常配合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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值