Python命令行参数解析_sys与argparse用法

3次阅读

python命令行参数处理推荐用argparse,sys.argv仅适用于简单场景;前者支持自动帮助、类型校验、子命令等,后者仅提供原始字符串列表且需手动处理。

Python命令行参数解析_sys与argparse用法

Python中处理命令行参数主要有两种方式:简单场景用 sys.argv,规范项目推荐用 argparse。前者轻量直接,后者支持自动帮助生成、类型校验、子命令等,更适合可维护的脚本。

sys.argv:最基础的参数获取方式

sys.argv 是一个列表,包含运行 Python 脚本时输入的所有命令行字符串,argv[0] 是脚本文件名,后续元素是传入的参数。

  • 适合快速测试或极简工具(比如 python script.py input.txt -v
  • 所有参数都是字符串,需手动转换类型(如 int(sys.argv[1])
  • 无内置错误提示,参数缺失或格式错需自己检查并 print 提示
  • 不支持短选项合并(如 -abc)、长选项(--help)、默认值等特性

argparse.ArgumentParser:推荐的标准做法

argparse 是 Python 标准库中专为命令行解析设计的模块,能自动生成帮助信息、校验参数合法性,并支持复杂结构(如子命令、互斥组)。

  • 先创建解析器:parser = argparse.ArgumentParser(description="描述用途")
  • 添加参数:parser.add_argument("-f", "--file", type=str, required=True, help="输入文件路径")
  • 解析调用:args = parser.parse_args(),返回命名空间对象,如 args.file
  • 运行 python script.py -h 自动输出格式化帮助,无需额外编码

常见实用技巧

实际使用中常遇到这些需求:

立即学习Python免费学习笔记(深入)”;

  • 可选参数带默认值:用 default="value",避免 required=False 和手动判断
  • 布尔开关参数:用 action="store_true",如 --verbose 触发 args.verbose == True
  • 多个位置参数:用 nargs="+" 接收至少一个,nargs="*" 接收零个或多个
  • 限制取值范围:用 choices=["a", "b"] 或自定义 type= 函数做校验

什么时候选哪个?

单行调试或临时脚本,sys.argv 足够快;只要脚本可能被他人使用、需要文档、或未来会扩展功能,就该用 argparse。它写的多几行,但省下的维护成本和用户困惑远超这点开销。

text=ZqhQzanResources