Python命令行脚本开发教程_argparse与sys模块应用

20次阅读

argparse是python命令行脚本开发的推荐标准方案,sys.argv适合简单场景;前者支持自动帮助、类型转换、校验等,后者仅返回原始参数列表,需手动处理。

Python命令行脚本开发教程_argparse与sys模块应用

Python命令行脚本开发中,argparse是推荐的标准方案,sys.argv适合简单场景。两者不是互斥关系,而是按需选择:小工具sys够快,正式脚本用argparse更健壮、可维护。

用sys.argv快速获取参数

sys.argv是最底层的方式,返回命令行输入的字符串列表,sys.argv[0]是脚本名,后续元素是传入的参数。适合单参数、无选项、调试用的小脚本。

  • 直接索引取值,例如filename = sys.argv[1](注意加try/except防报错)
  • len(sys.argv)判断参数个数是否符合预期
  • 不支持自动帮助信息、类型转换、参数校验,全靠自己写逻辑

用argparse构建专业命令行接口

argparse是Python标准库中专为命令行解析设计的模块,能自动生成帮助文档、处理短/长选项、类型转换、默认值、互斥组等。

  • 先创建ArgumentParser对象,调用add_argument()定义参数,如parser.add_argument("-f", "--file", help="输入文件路径")
  • 调用parser.parse_args()后得到命名空间对象,属性名即参数名(如args.file
  • 支持type=intdefault="xxx"required=Truenargs="+"(接收多个值)等实用参数
  • 运行脚本时加-h--help自动输出格式化帮助页

常见组合技巧与避坑点

实际开发中常混合使用两种方式,或在argparse基础上做增强。

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

  • argparse.ArgumentParser(prog="mytool")自定义程序名,避免显示完整路径
  • 对必需但可能为空的参数(如配置文件),用const + nargs="?"实现“开关式”参数
  • 避免直接修改sys.argv再传给argparse;如需预处理,应先提取、再构造新参数列表
  • 子命令支持用add_subparsers(),适合git commitgit push这类多动作工具

一个最小可用示例

以下是一个带文件输入、是否静默模式、输出行数的脚本骨架:

import argparse 

def main(): parser = argparse.ArgumentParser(description="统计文本行数") parser.add_argument("file", help="要读取的文件路径") parser.add_argument("-s", "--silent", action="store_true", help="不打印内容,只输出行数") args = parser.parse_args()

with open(args.file) as f:     lines = f.readlines() print(len(lines)) if not args.silent:     print("".join(lines[:3]))  # 打印前3行示意

if name == "main": main()

保存为count.py后,可运行python count.py data.txt -spython count.py data.txt --help验证效果。

text=ZqhQzanResources