gpt4 book ai didi

python - 在 argparse 中混合位置参数和可选参数

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:41 25 4
gpt4 key购买 nike

当我混合使用位置参数、可选参数和 argparse.REMAINDER 时,我在 argparse 中遇到了问题

parser = argparse.ArgumentParser()
parser.add_argument('verbose', action="store")
parser.add_argument('--config', '-c', nargs="?", dest="config_file")
parser.add_argument('--dry-run', action="store_true", dest="dryrun")
parser.add_argument('args', nargs=argparse.REMAINDER, action="store")

样本运行:

python test.py verbose="5" --config config.xml graph --dry-run

预期输出:

verbose = "5"
config_file = config.xml
dryrun = True
args = ['graph']

实际输出:

verbose = "5"
config_file = config.xml
dryrun = False
args = ['graph', '--dry-run']

我的要求是我有verbose-c--config--dry-run作为命令行选项和命令行提供的任何其他选项都应存储在列表 args 中,而不管参数在命令行中出现的顺序如何。请帮助我做错的地方。还有其他更好的 python 命令行解析器吗?

最佳答案

我会说你需要的配置是这样的:

    parser.add_argument('--verbose', action="store")
parser.add_argument('-c', '--config', nargs="?", dest="config_file")
parser.add_argument('--dry-run', action="store_true", dest="dryrun")
parser.add_argument('args', nargs='*')

我认为您提供的“REMAINDER”参数专门告诉 argparse 模块在发现第一个参数无法与其余参数匹配时获取 args 中的其余参数。

如果您希望 args 有 0 个或更多参数,请使用“*”,如果您希望至少有 1 个参数,请使用“+”作为 nargs 参数。

除此之外,我会推荐 argparse documentation因为有很多可能性已经用所需的类型(例如 int 或文件参数)进行了解析。还在免费的 Aptana Studio 中创建一个 CLI-argparse 模块,为 argparse 提供了一个很好的包装器,其中一些标准参数(如详细)已经设置。在这种情况下,详细将是整数级别。

关于python - 在 argparse 中混合位置参数和可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583870/

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