python笔记 - getopt模块

常配合sys模块,用来处理命令行参数

常用方法:

  • getopt
  • GetoptError

  1. 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

你可能感兴趣的:(python笔记 - getopt模块)