gpt4 book ai didi

python - 具有函数的 argparse 子解析器

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:56 28 4
gpt4 key购买 nike

你好,我从 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。我做错了什么?谢谢!

最佳答案

因为需要通过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()

关于python - 具有函数的 argparse 子解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038616/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com