Python获取命令行参数的两种方法:sys.argv与getopt详解
本文详细介绍在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命令行参数相关内容,请搜索本站历史文章或继续浏览后续文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













