正如评论所指出的那样,问题在于
-前缀被解析为选项而不是参数。解决此问题的一种方法是使用
prefix_chars参数更改用于选项的前缀:
#!/usr/bin/pythonimport argparseparser = argparse.ArgumentParser(prefix_chars='@')parser.add_argument('@@xlim', nargs = 2, help = 'X axis limits', action = 'store', type = float, default = [-1.e-3, 1.e-3])print parser.parse_args()输出示例:
$ ./blaa.py @@xlim -2.e-3 1e4Namespace(xlim=[-0.002, 10000.0])
编辑:或者,您可以继续
-用作分隔符,
xlim作为单个值传递并使用函数
type来实现自己的解析:
#!/usr/bin/pythonimport argparsedef two_floats(value): values = value.split() if len(values) != 2: raise argparse.ArgumentError values = map(float, values) return valuesparser = argparse.ArgumentParser()parser.add_argument('--xlim', help = 'X axis limits', action = 'store', type=two_floats, default = [-1.e-3, 1.e-3])print parser.parse_args()输出示例:
$ ./blaa.py --xlim "-2e-3 1e4"Namespace(xlim=[-0.002, 10000.0])



