gpt4 book ai didi

python argparse : how to override all other parameters - like --help does in most programs?

转载 作者:行者123 更新时间:2023-11-28 22:31:26 27 4
gpt4 key购买 nike

我们有一堆使用标准参数集的脚本。这些在所有脚本使用的类中定义。每个脚本都可以根据需要添加额外的参数。

我正在尝试添加一个新参数,该参数应该像 --help 一样工作,因为如果存在,所有其他参数都将被忽略。当给出新参数 (--doc_string) 时,我希望忽略所有其他参数,我将打印一个特定的字符串并退出。有没有办法用 argparse 做到这一点?

我看过像这样使用组:

parser = argparse.ArgumentParser(prog='PROG')
group1 = parser.add_argument_group('docs', 'doc printing')
group1.add_argument('--doc_string', action = 'store_true', help='print the doc string and exit')
group2 = parser.add_argument_group('group2', 'group2 description')
group2.add_argument('--bar', required=True, help='bar help')
group2.add_argument('--blah',required=True, help='url used to test.')
parser.parse_args()

但是当仅使用 --doc_string 运行时,我仍然收到消息 --bar is required。排外团体也不对。

我也看过子类化 argparse.RawDescriptionHelpFormatterargparse.RawTextHelpFormatterargparse.ArgumentDefaultsHelpFormatter 但无法处理如何使用这些来完成我想做的事情。

最佳答案

向解析器注册您自己的操作。然后你可以像 --help, --version 等一样做,即通过指定操作。

import argparse

class DocstringAction(argparse.Action):

def __call__(self, parser, namespace, values, option_string=None):
print('see ya later alligator')
parser.exit()

parser = argparse.ArgumentParser(prog='PROG')
parser.register('action', 'docstring', DocstringAction)
group1 = parser.add_argument_group('docs', 'doc printing')
group1.add_argument('--doc_string', nargs=0, action='docstring', help='print the doc string and exit')
group2 = parser.add_argument_group('group2', 'group2 description')
group2.add_argument('--bar', required=True, help='bar help')
group2.add_argument('--blah',required=True, help='url used to test.')
parser.parse_args()

如果您不需要文档字符串操作的任何参数,那么您可以(应该)将 nargs=0 推送到 DocstringAction.__init__ 中,这样就没有必要了指定那个。

关于 python argparse : how to override all other parameters - like --help does in most programs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41575422/

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