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