您好我从argparse
开始。我的目标是使用主命令构建一个CLI,该命令接受参数并重定向到相应的命令函数。这是我到目前为止所做的:
def main():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
command1_parser = subparsers.add_parser('command1')
command1_parser.set_defaults(func=command1)
command1_parser.add_argument('--name', dest='name')
command2_parser = subparsers.add_parser('command2')
command2_parser.set_defaults(func=command2)
command2_parser.add_argument('--frequency', dest='frequency')
args = parser.parse_args()
def command1():
# do something with args.name
def command2():
# do something with args.frequency
if __name__ == '__main__':
main()
当我这样做时:
entrypoint command1 --name Hello
或者:
entrypoint command2 --frequency 10
无法捕获相应的args
。我做错了什么?谢谢!
答案 0 :(得分:4)
因为您需要args.func(args)
手动调用该功能:
import argparse
def main():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
command1_parser = subparsers.add_parser('command1')
command1_parser.set_defaults(func=command1)
command1_parser.add_argument('--name', dest='name')
command2_parser = subparsers.add_parser('command2')
command2_parser.set_defaults(func=command2)
command2_parser.add_argument('--frequency', dest='frequency')
args = parser.parse_args()
args.func(args)
def command1(args):
print("command1: %s" % args.name)
def command2(args):
print("comamnd2: %s" % args.frequency)
if __name__ == '__main__':
main()