使用argeparse选项调用函数并将其传递给sys.argv元素

时间:2017-01-31 08:24:38

标签: python argparse

我有两个功能



{{1}}




然而,当我运行script.py -s JohnDoe时 它选择运行函数b,而JohnDoe的问题是什么?

1 个答案:

答案 0 :(得分:1)

args = parser.parse_args

缺少运行该方法的()。否则,您最终会将绑定方法分配给args。它没有解析任何东西。

dest参数应该是一个字符串。它是args中属性的名称。如果没有destscript.py -s JohnDoe应生成

In [858]: setattr(args, 's', 'JohnDoe')    # done during parsing
In [859]: args                          # display the args variable
Out[859]: Namespace(s='JohnDoe')
In [860]: args.s
Out[860]: 'JohnDoe'

你可以在

中使用
b(arg.s)

它是action参数,用于确定使用新解析的值完成的操作。默认情况下,如我所示,将其存储在args中。使用自定义Action课程可以做更高级的内容,但这是一个高级主题。

dest=b(sys.argv[3])

dest设置为b返回的值,可能是None。如果b被定义为

def b(arg):
    return arg

然后b(sys.argv[3])会生成JohnDoe,您就会得到args,如下所示:

In [863]: args
Out[863]: Namespace(JohnDoe='JohnDoe')

这是一个可爱的伎俩,但可能不是你想要的。