[Python #1] argparse: unrecognized arguments

本文介绍了一个使用Python argparse模块时出现的未识别参数错误案例。通过分析错误代码及执行结果,指出了问题所在——多余的程序名称参数导致了位置参数无法识别,并给出了修正方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python argparse: unrecognized arguments

问题代码:

#!/usr/bin/python

import sys
import argparse


def main(argv):
    parser = argparse.ArgumentParser(description="generate points file for profile fitting")
    parser.add_argument('-e', '--gAe', type=float, nargs=2, help="range of gAe")
    parser.add_argument('-g', '--gAg', type=float, nargs=2, help="range of gAg")
    parser.add_argument('-n', '--gAn', type=float, nargs=2, help="range of gAn")

    print(parser.parse_args(argv))
    
if __name__ == '__main__':
    main(sys.argv)

error信息:

$ python produce_scan_pts.py  -e 0 5e-12 -g 1e-12 1e-7 -n 1e-10 1e-3
produce_scan_pts.py: error: unrecognized arguments: produce_scan_pts.py

解决办法:

% print(parser.parse_args(argv))
print(parser.parse_args())

错误原因:
当我们传入argv时,同时也传入了当前程序的名字(可以输出argv进行查看),这就导致第一个参数unrecognized, 也就是没有定义的位置参数。

['produce_scan_pts.py', '-e', '0', '5e-12', '-g', '1e-12', '1e-7', '-n', '1e-10', '1e-3']

参考:
解答出处
(选择翻译好麻烦啊,在此感谢unutbu的解答!)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值