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

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

本文详细介绍在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 相关产品和应用

全部下载

专题列表