如何将子参数传递给子解析器的默认函数?

时间:2015-10-09 19:56:46

标签: python python-3.x parameter-passing argparse

如果我有如下的Argparse设置:

parser = argparse.ArgumentParser(description='test.')
subparsers = parser.add_subparsers(help='sub-command help')

parser_somethingX = subparsers.add_parser('somethingX', help='generate X')
parser_somethingY = subparsers.add_parser('somethingY', help="generate Y")

parser_somethingZ = subparsers.add_parser('somethingZ', help='generate Z')
parser_somethingZ.add_argument('N', type=int,help='times to loop')
parser_somethingZ.set_defaults(func=execute_z)

args = parser.parse_args()

假设用户使用以下命令调用我的脚本:

myScript.py somethingZ 1000

调用我的函数execute_z 的正确/最佳实践方法是什么,但也传递了子参数 N

请注意,对于sub参数 somethingZ ,我将默认函数调用设置为 execute_z ,但如何将此函数传递给所需的后续子参数还有?即, n ?因为函数定义是:

def execute_z(n):
  # n is an integer value definining number of times to loop

对我的脚本的典型调用是:

myScript.py somethingZ 300

如何将 300 传递给 somethingZ

1 个答案:

答案 0 :(得分:0)

我认为使用argparse的{​​{1}}示例解释了如何使用该功能?

看看setdefaults。它可能看起来像

args

所以你应该可以使用:

Namespace(func=execute_z, N=1000)
相关问题