Python获取命令行参数的两种方法:sys.argv与getopt详解

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

本文详细介绍在Python中获取命令行输入的两种主要方式:通过sys.argv直接获取参数列表,以及使用getopt模块解析带有短选项和长选项的复杂参数。文章包含具体代码示例、测试数据及执行结果,并指出getopt在处理未定义参数时的潜在限制,帮助开发者根据需求选择合适的方法。

Python获取命令行参数的两种方法

在直接执行Python文件时,我们往往需要从命令行获取传入的参数。

获取命令行参数主要有两种实现方式。

通过sys.argv获取参数

第一种方式是通过sys模块的argv属性。

sys.argv返回一个包含所有参数的列表,其中列表的第一个元素是脚本文件名本身。要获取文件名后的第一个实际参数,需访问sys.argv[1]。如果有多个参数,它们之间通常以空格分隔。

测试代码:


import sys
 
print(sys.argv)
print(len(sys.argv))
print(len(sys.argv[1]))

测试数据:


python3 test.py 第一个参数 第二个参数

执行结果:

['test.py', '第一个参数', '第二个参数'] 3 5 [] ['第一个参数', '第二个参数']

通过getopt()解析参数

第二种方式是通过getopt()函数来获取参数值。

如果希望命令行能够像Linux命令那样通过指定参数名来运行,可以使用getopt()来获取具体的参数内容。

命令【getopt.getopt(参数列表,"短选项参数",[长选项参数])】
参数可以从两个维度进行区分:一是短选项与长选项;二是是否带有参数值(即开关型参数)。

短选项参数(在命令行中使用-参数名表示):由单个字母组成。如果该字母后面紧跟冒号:,则表示此参数需要附带一个参数值;否则,表示该参数不需要输入额外值。 例如:io: 表示入参要输入-i -o=xxx

长选项参数(在命令行中使用--参数名表示):格式为[参数名=]。对于带有值的参数,必须显式写出=号,否则程序会抛出错误。 例如:["help","input=","output="] 表示入参要输入 --help --input=xxx --output=xxx

测试代码:


import getopt
import sys
 
opts,args=getopt.getopt(sys.argv[1:],"i:ho:",["help","input=","output="])
print(opts)
print(args)
 
for opts,arg in opts:
  print(opts)
  if opts=="-h" or opts=="--help":
    print("我只是一个说明文档")
  elif opts=="-i" or opts=="--input":
    print("我只是输入,输入内容如下:")
    print(arg)
  elif opts=="-o" or opts=="--output":
    print("我只是输出,输出内容如下:")
    print(arg)

测试数据:


python3 test.py -h -o=输出 --input=输入 最后一个参数

测试结果:

[('-h', ''), ('-o', '=输出'), ('--input', '输入')] ['最后一个参数'] -h 我只是一个说明文档 -o 我只是输出,输出内容如下: =输出 --input 我只是输入,输入内容如下: 输入

说明:使用getopt()时需要注意,不能将未定义的参数放置在短选项和长选项列表的前面。否则,像-h或--help这样的选项可能无法正确读取参数值(源码实现中对此情况处理不够严谨,遇到此类情况会直接break)。将这些未定义参数放在后面是可以的,并且可以通过args变量获取到。

在getopt()函数中,第一个参数传入sys.argv[1:]的原因是命令行中的第一个参数通常是文件名本身,在此处并无实际意义,因此需要切片排除。

总结

至此,关于Python获取命令行输入参数的两种方法介绍完毕。如需了解更多Python命令行参数相关内容,请搜索本站历史文章或继续浏览后续文章,希望大家以后多多支持本站!

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

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 算法库。