Python中getopt()函数用法详解

青禾
青禾
发布时间:2026-10-16| 5人浏览过
原创

本文详解Python中getopt模块的getopt()函数用法。通过解析sys.argv[1:],支持短参(如-a, -b:)和长参(如--aa, --bb=)。文章提供完整代码示例,展示如何处理带值与不带值的参数,以及参数含空格时的引号处理,帮助开发者高效解析命令行输入。

利用Python标准库中的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: [('-a', ''), ('-b', 'test short_b'), ('--aa', ''), ('--bb', 'long_bb')] args: ['xxxx']

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

到此这篇关于python中getopt()函数用法的文章就介绍到这了,更多相关python getopt()函数用法内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。