Python 使用getopt函数用法

1.getopt有啥用?

        python使用命令行运行脚本的时候,可使用getopt()函数进行解析各种参数,可解析sys.argv获取用户输入。

2.getopt怎么用

定义:getopt(args, shortopts, longopts=[ ]),

  • args:固定写法sys.argv[1:]
  • shortopts: 短选项
    • 限制命令参数的key名称(命令参数可以不传,若传,必须按照指定名称,否则就噶了)
    • 命令行参数必须使用-(单短横线)
    • 命令行参数写法:1. -a (不带参数)     2.-a test_a(带参数,中间有空格,也可省略空格)     3. -a "test_a test_b test_c"(如果参数中有空格,需要使用引号)
    • shortopts短参写法:'a:b:c:d' (如果带参数值必须加:,a,b,c可带参数值,d不能带参数值,否则报错)
  • longopts:长选项
    • 数组类型的字符串
    • 命令行参数必须使用--(双短横线)
    • --a: 不带参数值
    • --a=test_aa : 带参数值
    • --a="test_aa test_bb" : 参数带空格 (注意等号前后不能有空格

返回值:getopt()函数有2个返回值,分别是opts 和 args, opts保存解析后的输入参数的元组,args保存的是除去解析后的部分,即不能被解析的参数元组。

3.代码演示

import sys
from getopt import getopt

opts, agrs = getopt(sys.argv[1:], 'a:bc:d', ['xx=', 'ff=','ww'])
print(f'opts:{opts}')
print(f'agrs:{agrs}')

命令行运行:

python3 get_opt_test.py -a atest_b -bc "test_参数空格1 test_参数空格" -d --xx=我是xx --f=我是ff --ww  我是多余的

打印运行结果:

opts:[('-a', 'atest_b'), ('-b', ''), ('-c', 'test_参数空格1 test_参数空格'), ('-d', ''), ('--xx', '我是xx'), ('--ff', '我是ff'), ('--ww', '')]
agrs:['我是多余的']

说明:

1. 参数-a atest_b(-a=atest_b)-> 获取atest_b 

2. -bc "test_参数空格1 test_参数空格" -> 按照顺序,-b解析到value为空,-c解析到value为"test_参数空格1 test_参数空格"

3.-d 没有value,所以value为空,注意:由于d没有参数,所以在定义的时候,不能有:(冒号),否则就会被识别必须传参

Python 使用getopt函数用法_第1张图片

异常传参:Python 使用getopt函数用法_第2张图片

4.--xx 和--ff 为长参数选项,必须带参数,注意:传参不能有空格,否则解析不对

Python 使用getopt函数用法_第3张图片

Python 使用getopt函数用法_第4张图片

你可能感兴趣的:(python,linux)