gpt4 book ai didi

python - 已指定检测参数(argparse)

转载 作者:行者123 更新时间:2023-11-28 17:33:15 25 4
gpt4 key购买 nike

当我们指定可选参数时使用 argparse 模块时,我们可以多次指定它,例如

my_app --arg a --arg b --arg c --arg d

结果 Namespace 中的最终值是命令行中最后指定参数的值(示例中为“d”)。这种情况能检测出来吗?我想以某种方式通知用户此行为。

我可以自定义Action,但我不想重新定义所有标准操作,例如store_true。以某种方式包装标准 add_argument(...) 函数会很酷。

提前致谢!

最佳答案

您可能可以通过创建自己的 Action 来做到这一点,但这里是您如何在没有 Action 的情况下使用 action='append' 参数到 add_argument :

import argparse
import sys
p = argparse.ArgumentParser()
p.add_argument('--arg', action='append')
print("0 options:", p.parse_args([]))
print("1 option:", p.parse_args("--arg a".split()))
print("2 options:", p.parse_args("--arg a --arg b".split()))
print("3 options:", p.parse_args("--arg a --arg b --arg c".split()))
print()
args = p.parse_args()
if args.arg:
if len(args.arg) > 1:
sys.exit("Option --arg specified multiple times!")

不带参数运行上面的代码:

$ python3 par.py
0 options: Namespace(arg=None)
1 option: Namespace(arg=['a'])
2 options: Namespace(arg=['a', 'b'])
3 options: Namespace(arg=['a', 'b', 'c'])

使用 1 个参数运行:

$ python3 par.py --arg a
0 options: Namespace(arg=None)
1 option: Namespace(arg=['a'])
2 options: Namespace(arg=['a', 'b'])
3 options: Namespace(arg=['a', 'b', 'c'])

使用 2 个(或更多)参数运行会让您到达 sys.exit():

$ python3 par.py --arg a --arg b                                      
0 options: Namespace(arg=None)
1 option: Namespace(arg=['a'])
2 options: Namespace(arg=['a', 'b'])
3 options: Namespace(arg=['a', 'b', 'c'])

Option --arg specified multiple times!

关于python - 已指定检测参数(argparse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32844583/

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