gpt4 book ai didi

python - 如何使 argparse 仅适用于一个参数,即使传递了许多参数?

转载 作者:行者123 更新时间:2023-11-30 23:03:16 26 4
gpt4 key购买 nike

我的解析器的结构:

parser = argparse.ArgumentParser()
parser.add_argument('-s', '--search')
parser.add_argument('-t', '--status' action='store_true')
args = parser.parse_args()
if args.search:
func(args.search)
if args.status:
func1()

现在解析器可以接受这两个选项,-s query -t 有效。我有两个问题:

  1. 仅当传递多个参数时如何对第一个参数采取操作。-s query -t 只需要结果

    if args.search:
    func(args.search)

    待完成。

  2. 如果传递多个参数,如何抛出错误?

最佳答案

这里合适的工具是 subparser ;惯用用法与您当前建议的命令行不同。

def your_search_function(options):
pass # do a search here

def your_status_function(options):
pass # collect status here

def main():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparser(dest='action')

search_parser = subparsers.add_parser('search')
search_parser.set_defaults(func=your_search_function)

status_parser = subparsers.add_parser('status')
status_parser.set_defaults(func=your_status_function)

results = parser.parse_args()
results.func(options=results)

if __name__ == '__main__':
main()
<小时/>

用法如下:

./yourcommand <global options> search <search options>

./yourcommand <global options> status <status options>

...由于它需要子命令作为参数而不是选项运行,因此不允许传递多个子命令,因此提出问题的部分仅在用法不明确时适用。

<小时/>

全局选项可以像往常一样添加到解析器中; search_parser 的搜索特定选项,status_parser 的状态特定选项。

关于python - 如何使 argparse 仅适用于一个参数,即使传递了许多参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166057/

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