Qua*_*nic 2 python argparse python-3.x
我是 argparse 的新手,所以这可能是基础。
我更喜欢将所有字符串常量定义一次 ( blah = 'foo'),然后在整个代码中使用它。当我到达时set_defaults,似乎我仅限于 kwarg 类型的参数。
也就是说,parser.set_defaults(NUM=ONE)不将 NUM 视为字符串。这是一个更完整的例子:
ONE = 'one'
TWO = 'two'
SIX = 'six'
NUMBER_OPTS = [ONE, TWO, SIX]
NUM = 'num'
parser = argparse.ArgumentParser()
pform = parser.add_mutually_exclusive_group()
for opt in NUMBER_OPTS:
pform.add_argument('--'+opt, dest=NUM, action='store_const', const=opt)
parser.set_defaults(NUM=ONE) # Can't find a syntax to make this DWIM
args = parser.parse_args()
print("%s is %s" % (NUM, vars(args)[NUM]))
Run Code Online (Sandbox Code Playgroud)
所以 whileadd_argument将字符串作为目的地,set_defaults而不是。