Python 获取命令行参数的两种实现方式
在编写 Python 脚本时,接收外部输入的参数是常见需求。本文介绍两种获取命令行参数的方法:利用 sys 模块直接读取参数列表,以及使用 getopt 模块解析带选项的参数。
使用 sys.argv 获取基础参数
Python 的 sys 模块提供了 argv 列表,用于存储命令行传递的参数。该列表的第一个元素 sys.argv[0] 始终表示当前执行的脚本文件名。从索引 1 开始,依次存放用户输入的具体参数值。
通过遍历 sys.argv,可以获取参数的数量及具体内容。例如,执行命令 python test.py hello world 时,sys.argv[1] 为 'hello',sys.argv[2] 为 'world'。
import sys
print "脚本名:", sys.argv[0]
for i in range(1, len(sys.argv)):
print "参数", i, sys.argv[i]使用 getopt 处理带选项的参数
当脚本需要支持类似 -i inputfile -o outputfile 的选项格式时,使用 getopt 模块更为合适。该模块能够解析短选项和长选项,并将参数分类为选项列表和剩余参数列表。
短选项解析
getopt.getopt() 函数原型为 getopt.getopt(args, options[, long_options])。其中 options 字符串定义了支持的短选项格式:
- 若选项字符后无冒号,表示该选项为开关状态(如
-h)。 - 若选项字符后紧跟冒号,表示该选项需要携带附加参数(如
-i和-o)。
以 "hi:o:" 为例,h 为开关选项,i 和 o 需带参数。函数返回两个列表:opts 和 args。opts 包含由 (选项, 参数值) 组成的元组列表;args 包含未识别的剩余参数。
import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
if op == "-i":
input_file = value
elif op == "-o":
output_file = value
elif op == "-h":
usage()
sys.exit()长选项支持
除了短选项,getopt 还支持长选项。在第三个参数 long_options 中指定长选项名称。若长选项需要参数,需在名称后添加等号(=)。
例如,支持 --version 和 --file=error.txt 的调用方式,代码可写为:
getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])通过结合 sys.argv 与 getopt,可以灵活应对从简单参数传递到复杂命令行交互的各种场景。
以上就是 Python 获取命令行参数的详细内容,更多关于 Python 脚本开发、sys.argv 用法及 getopt 模块的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









