您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python Argparse:带有负数的可选参数的问题

Python Argparse:带有负数的可选参数的问题

正如评论所指出的那样,问题在于-前缀被解析为选项而不是参数。解决此问题的一种方法是使用prefix_chars参数更改用于选项的前缀:

#!/usr/bin/python
import argparse

parser = 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 1e4
Namespace(xlim=[-0.002, 10000.0])

编辑:或者,您可以继续-用作分隔符,xlim作为单个值传递并使用函数type 来实现自己的解析:

#!/usr/bin/python
import argparse

def two_floats(value):
    values = value.split()
    if len(values) != 2:
        raise argparse.ArgumentError
    values = map(float, values)
    return values

parser = 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])
python 2022/1/1 18:31:50 有473人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶