Python脚本命令行参数获取与处理详解
本文详细解析Python脚本中获取命令行参数的三种主流方式:sys.argv直接获取、getopt模块分组处理以及argparse标准库的高级解析。通过对比三者的功能特性、代码示例及适用场景,帮助开发者根据参数复杂度选择最合适的方案,提升脚本的可读性与兼容性。
Python脚本常见参数获取和处理
在日常编写Python脚本时,经常需要从命令行接收外部输入的参数。本文旨在梳理并记录几种常见的参数获取与处理方法,帮助开发者更高效地处理命令行交互。
1. 使用args获取参数
利用sys模块中的argv列表可以接收脚本运行时的参数。该列表的第一个元素通常是脚本本身的文件名,而通过切片sys.argv[1:]可以获取命令行传入的所有后续参数。
代码示例:
test_args.py
import sys
argv = sys.argv[1:]
print("args==argv==", argv)
代码执行效果:

2. 使用getopt处理命令行传入的参数
getopt模块专门用于处理命令行参数,其基本调用格式为getopt(args, shortopts, longopts = [])。其中,args参数通常传入sys.argv[1:],shortopts定义短格式参数(以单个连字符-开头),longopts定义长格式参数(以双连字符--开头)。
代码示例:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
test_args.py
argv = sys.argv[1:]
print("args==argv==", argv)
options, args = getopt.getopt(sys.argv[1:], "hd:n:", ["help", "date=", "name="])
print("args==getopt==",options, "options=====", args)
代码执行结果:

3. 标准库argsparse
argparse是Python内置的命令行解析标准模块,无需额外安装。它允许开发者在命令行中直接传入参数,并自动进行解析,使程序运行更加直观和灵活。
代码示例:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
test_args.py
import argparse
parser = argparse.ArgumentParser(description='ArgUtils')
parser.add_argument('-d', type=str, default='000000', help="data date")
parser.add_argument('-a', type=str, default=None, help="agent_id_from_platform id")
args = parser.parse_args()
在add_argument函数中,第一个参数指定脚本参数的名称;type参数用于限制传入参数的数据类型;default参数用于设置参数的默认值;required参数则用于标识该参数是否为必传项。
代码执行效果:

总体而言,sys.argv兼容性较强,能够接收任意形式的传参;getopt对传入参数进行了分组处理,结构更清晰;而argparse则显著提高了参数的可读性,并支持更多高级功能。
Python脚本获取外部参数
方式1
使用sys模块获取参数,实现简单直接。
import sys
print("python文件名: ", sys.argv[0])
print("第1个参数: ", sys.argv[1])
print("第2个参数: ", sys.argv[2])
# 传参方式
python test.py arg1 arg2方式2
如果参数数量较多且包含默认值,建议使用argparse模块,其代码可读性更高。
可以定义参数类型、默认值。
import argparse
# 设置参数名
parser = argparse.ArgumentParser()
parser.add_argument("-username", dest="username", type=str)
parser.add_argument("-password", dest="password", type=str)
parser.add_argument("-date", dest="date", type=str, default='2021-01-01')
# 获取参数
args = parser.parse_args()
username = args.username
password = args.password
date = args.date
# 传参方式
python test.py -username=xxx -password=xxx
以上为个人经验总结,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













