首页 > 编程语言 >python中getopt()函数用法

python中getopt()函数用法

时间:2022-12-01 04:44:05浏览次数:45  
标签:bb python 用法 -- 参数 命令行 test getopt 参数值

通过getopt模块中的getopt( )方法,我们可以获取和解析命令行传入的参数

一、函数用法

  • getopt(args, shortopts, longopts=[ ])

    • args:固定写法sys.argv[1:]
    • shortopts:短参
      • 字符串类型,限制命令行可传入的短参名称(命令行可不传参,如果传参,必须是指定的参数名,否则会报错)
      • 参数名必须为单字符,前面使用单短横线(-)
      • 命令行写法:
        • -a  不带参数值形式
        • -b test_b  带参数值形式(中间空格可省略,个人推荐带上空格,更容易区分)
        • -c 'test c'  参数值含空格,需要使用引号
      • 按照上述命令行写法,shortopts的写法可以是:'ab:c:'
        • 如果带参数值,则需要在参数名后面带上':'
        • 各参数名先后顺序无所谓,比如'b:ac:'
    • longopts:长参
      • 数组类型,元素为字符串,限制命令行可传入的长参名称(命令行可不传参)
      • 参数名前使用双短横线(--)
      • 命令行写法:
        • --aa  不带参数值形式
        • --bb=test_bb  带参数值形式
        • --cc='test cc'  带参数值形式,参数值含空格,需要使用引号
      • 按上述命令行写法,longopts写法可以是:['aa', 'bb=', 'cc=']
        • 如果带参数值,则需要在参数名后面带上'='
        • 各参数名先后顺序无所谓

二、示例

  • 代码

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import sys
    from getopt import getopt
    
    opts, args = getopt(sys.argv[1:], 'ab:', ['aa', 'bb='])
    
    # 解析出的参数名和值,格式:[(参数1,参数值1), (参数2,参数值2)...]
    print(f'opts: {opts}')
    
    # 未解析出来的参数值部分
    print(f'args: {args}')
  • 命令行

     python main.py -a -b 'test short_b' --aa --bb=long_bb xxxx

    输出:

    opts: [('-a', ''), ('-b', 'test short_b'), ('--aa', ''), ('--bb', 'long_bb')]
    args: ['xxxx']

    对于没有参数值的a和aa参数,解析出的参数值都为空字符串'',由于bb参数的参数值long_bb和xxxx之间有空格,所以未解析出

  • 命令行

    python main.py -b=test_b

    输出:

    opts: [('-b', '=test_b')]
    args: []

    参数可传,也可省略,如果传,则必须是代码中所指定的

标签:bb,python,用法,--,参数,命令行,test,getopt,参数值
From: https://www.cnblogs.com/eliwang/p/16940309.html

相关文章

  • 关于python的copy模块内的浅拷贝和深拷贝
    Python中赋值语句不复制对象,而是在目标和对象之间创建绑定(bindings)关系,即复制的是对象的引用。对于自身可变(如列表)或者包含可变项的集合对象(如嵌套列表),有必要生成......
  • 原码反码和补码的区别及用法笔记
    之前学习原码、反码、补码的时候就学的很懵,知道反码和补码怎么算的,但是不知道有什么用。今天看了几个视频,虽然有举例,但是自己换了个数就算不出来了。后来终于弄明白了。......
  • Python中的六种基本数据类型
    Python中分为六种基本数据类型不可变类型(又叫静态数据类型,没有增删改操作):数字(number)、字符串(string)、元组(tuple)可变类型(又叫动态数据类型,支持增删改操作):列表(list......
  • Python基本语法
    Python基本语法字面量掌握字面量的含义代码中,被写在代码中的固定的值,称之为字面量常见的字面量类型我们目前了解:整数、浮点数、字符串这三类即可基于print语句完成......
  • python的socket模块
        socket参数使用##socket参数使用参数一:地址簇socket.AF_INETIPv4(默认)socket.AF_INET6IPv6socket.AF_UNIX只能够用于单一的Unix系统......
  • linux命令watch的用法
      前言是不是经常会遇到需要观察某个内容,为了持续观察而反复执行某个命令?也许你可以写一个简单的脚本帮你反复执行,但是有更简单方便的方法为什么不用呢?今天要介绍的便......
  • python 循环中 无法释放占用内存
    问题python循环里无法释放占用内存即使手动删除del对象再调用gc回收也无法释放内存以为你del只能强引用的计数器设为-1但是gc回收时会重新检查代码中的引......
  • 上帝与集合的正确用法——欧拉定理
    上帝与集合的正确用法题目描述根据一些书上的记载,上帝的一次失败的创世经历是这样的:第一天,上帝创造了一个世界的基本元素,称做元。第二天,上帝创造了一个新的元素,称作\(......
  • Python读取csv文件
    1.CSV逗号分隔值,英文全称Comma-SeparatedValues,缩写CSV,有时也称字符分隔值,因为字符分隔值也可以不是逗号,CSV文件以纯文本形式存储表格数据(数字和文本).纯文本意味......
  • python列表处理操作
    1、总结增、删、改、查list=[1,"xiaoming","atao","quangege",10,"a"]#列表增list.append("10")#列表尾部增加list.insert(1,"xxxx")#指定位置增加print(lis......