Python使用try except捕获命令行参数缺失并指明具体缺失参数的方法
问题解决代码调整方案
你可以通过两种方式实现明确提示缺失参数位置的需求:
方案1:先判断参数总长度(推荐,适合参数数量较多的场景)
这种方式逻辑更直观,后续新增参数时修改成本低:
import sys # 定义需要的业务参数总数 REQUIRED_ARG_NUM = 2 # sys.argv第一个元素是脚本本身,所以总长度要比业务参数数多1 if len(sys.argv) < REQUIRED_ARG_NUM + 1: # 计算缺失的参数起始位置 missing_start_pos = len(sys.argv) for pos in range(missing_start_pos, REQUIRED_ARG_NUM + 1): print(f"OS error: 缺失第{pos}个命令行参数") # 异常退出 sys.exit(1) # 校验通过再赋值参数 job_name = sys.argv[1] odate = sys.argv[2] print('Correct arguments were provided')
方案2:分步骤捕获单参数异常(适合参数少、需要自定义单参数提示的场景)
如果要保留try except的写法,可以拆分每个参数的赋值逻辑单独捕获:
import sys try: job_name = sys.argv[1] except IndexError: print("OS error: 缺失第1个命令行参数(任务名称)") sys.exit(1) try: odate = sys.argv[2] except IndexError: print("OS error: 缺失第2个命令行参数(业务日期)") sys.exit(1) print('Correct arguments were provided')
两种方案都可以精准定位到缺失的参数位置,你可以根据自己后续的参数扩展需求选择。
内容的提问来源于stack exchange,提问作者Ada_lovelace
相关产品推荐
相关产品推荐

