循环遍历python解析器中的参数

时间:2016-11-10 22:53:56

标签: python parsing command-line-parsing

我有以下python argparse解析器:

pointparser = argparse.ArgumentParser(add_help=False)
pointparser.add_argument("-a", "--a_value", default="NaN", nargs="?",
                         type=float)
pointparser.add_argument("-b", "--b_value", default="NaN", nargs="?",
                         type=float)
...
pointparser.add_argument("-j", "--j_value", default="NaN", nargs="?",
                         type=float)
data_point = pointparser.parse_args(parameterlist)
datapoint=[data_point.a_value, data_point.b_value, data_point.c_value,
           data_point.d_value, data_point.e_value, data_point.f_value,
           data_point.g_value, data_point.h_value, data_point.i_value,
           data_point.j_value]

是否可以遍历参数a-j并直接将它们存储在列表中。这样,我就可以打开参数的数量,即只转到-c或甚至转到-k

1 个答案:

答案 0 :(得分:1)

import argparse
import math

pointparser = argparse.ArgumentParser(add_help=False)
pointparser.add_argument("-a", "--a_value", default="NaN", nargs="?",
                         type=float)
pointparser.add_argument("-b", "--b_value", default="NaN", nargs="?",
                         type=float)
pointparser.add_argument("-j", "--j_value", default="NaN", nargs="?",
                         type=float)
data_point = pointparser.parse_args()
datapoint = [value for key, value in sorted(vars(data_point).items())
             if not math.isnan(value)]
print(datapoint)  # [1.0, 2.0]