如何使用系统参数构建“级联” CLI工具?

时间:2018-09-04 20:28:21

标签: python python-3.x argparse sys

这是我的示例代码:

\R?

我正在尝试创建一个级联的cli工具,其中基于我输入的一个选项,它运行一种特定的方法。该方法将依次具有其自己的参数集。 此特定代码引发错误:def function1(): parser = argparse.ArgumentParser(description='Test Cascading Utility') parser.add_argument('--number', type=str, help='Enter number') args = parser.parse_args() x = str(args.number) squares = float(x)**2 def function2(): parser = argparse.ArgumentParser(description='Test Cascading Utility') parser.add_argument('--number1', type=str, help='Enter number') parser.add_argument('--number2', type=str, help='Enter number') args = parser.parse_args() x = str(args.number1) y = str(args.number2) div = float(x)/float(y) def main(): choice = sys.argv[1] if choice == 'Y': function1() elif choice == 'N': function2() else: print("Come on, choose a Y or N option.") if __name__ == '__main__': main() 这使我认为“选择”系统参数已被参数解析器覆盖,因此如何在运行方法的选择基础上实现这种级联效果。

这是我第一次研究error: unrecognized arguments: Y,因此,如果问题很愚蠢,请多多包涵。但这是我真正想要实现的东西。

1 个答案:

答案 0 :(得分:0)

我建议您使用click。这使这些事情非常简单

http://click.pocoo.org/5/

您需要使用组,也许还要使用多命令链接

http://click.pocoo.org/5/commands/#group-invocation-without-command http://click.pocoo.org/5/commands/#multi-command-chaining

您可以创建组和子命令。 然后在每个子命令中调用要与之集成的原始函数。