gpt4 book ai didi

python - 如何管理 argparse 中的优先级?

转载 作者:太空狗 更新时间:2023-10-30 00:55:00 26 4
gpt4 key购买 nike

我正在使用 argparse 来管理命令行选项,我想管理两个选项,--check--nocheck。我实际上在 mybadscript.py 中做了类似的事情:

[...]
args = parser.parse_args()

if args.check:
check = True

if args.nocheck:
check = False
[...]

问题是如果以这种方式启动脚本:

python mybadscript.py --nocheck --check

check 将被设置为 False。这是不正确的,因为最后一个选项是 --check

如何正确管理它们?

PS:我知道您可以仅使用一个选项轻松避免它,但我知道如何使用 argparse 管理选项优先级,因为您可能会在更复杂的场景中遇到它。

PPS:建议的答案确实顺便回答了我的问题,但相关的问题不是同一个问题。

最佳答案

参见 argparse documentation .这是您可能想要的示例。我已经包含了几个您可能不需要的选项——我认为这比将它们关闭而您需要它们要好。

>>> parser = argparse.ArgumentParser()
>>> group = parser.add_mutually_exclusive_group(required=True)
>>> group.add_argument('--check', action='store_true', dest="check")
>>> group.add_argument('--nocheck', action='store_false', dest="check")
>>> parser.parse_args(["--check"])
Namespace(check=True)
>>> parser.parse_args(["--nocheck"])
Namespace(check=False)

您可能不想要互斥部分——在那种情况下删除第二行并将group替换为parser。如果这样做,您可能希望添加这一行:

>>> parser.set_defaults(check=False)

关于python - 如何管理 argparse 中的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635415/

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