如何将参数列表传递给python命令

时间:2019-05-17 22:38:17

标签: python

parser = argparse.ArgumentParser(description='Run the app')
skill_list = utils.read_yaml_file('skill_list.yml')
parser.add_argument('skill', choices=skill_list, help="Which skill?")

parser.add_argument('endpoints', default=None, help="Configuration file for the connectors as a yml file")

skill = parser.parse_args().skill
endpoints = parser.parse_args().endpoints 

在上面的代码中,我可以将两个参数传递如下:

run.py joke endpoints.yml

如果我的“技能”是变量列表,则意味着我不知道用户可能会传递多少参数。在这种情况下,我可以这样做:

run.py joke command weather endpoints.yml

此处的“笑话命令天气”将由“技能”参数传递。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

最好将ConnectionKeepAliveStrategy-foo用于端点。但是如果你想要参数完全相同的传递顺序。这应该起作用

--foo

答案 1 :(得分:0)

您还需要在add_argument函数中提供nargs参数。

parser.add_argument('--skill', nargs='+', help='List of skills', required=True)
parser.add_argument('--endpoints', default=None, help="Configuration file for the connectors as a yml file", required=True)

# Usage
# python run.py --skill joke command weather --endpoints endpoints.yml