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的解答!)