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

问题描述 投票:2回答:1

这是我的示例代码:

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()

我正在尝试创建一个级联cli工具,根据我输入的一个选项,它运行一个特定的方法。这个方法又有自己的一组参数。这个特殊的代码抛出一个错误:error: unrecognized arguments: Y这让我认为'choice'系统参数被参数解析器覆盖了,所以如何根据我运行该方法的选择实现这种级联效果。

这是我第一次钻研argparse,因此如果问题很愚蠢,请耐心等待。但这是我真正想要实现的。

python python-3.x argparse sys
1个回答
0
投票

我建议你使用点击。它使这些事情变得非常简单

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

您需要使用组,也可以使用多命令链接

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

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

© www.soinside.com 2019 - 2024. All rights reserved.