这是我的示例代码:
\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
,因此,如果问题很愚蠢,请多多包涵。但这是我真正想要实现的东西。
答案 0 :(得分:0)
我建议您使用click。这使这些事情非常简单
您需要使用组,也许还要使用多命令链接
http://click.pocoo.org/5/commands/#group-invocation-without-command http://click.pocoo.org/5/commands/#multi-command-chaining
您可以创建组和子命令。 然后在每个子命令中调用要与之集成的原始函数。