gpt4 book ai didi

Python argparse 检查标志是否存在,同时也允许参数

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:47 27 4
gpt4 key购买 nike

如何检查标志 --load 是否存在?

#!/usr/bin/env python3
import argparse
import os

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-l', '--load', nargs='?', metavar='path', help='Load all JSON files recursively in path')

args = parser.parse_args()

print(args)

使用 --load 调用脚本会输出以下内容:命名空间(load=None)

我不能省略 nargs='?' 并使用 action='store_true' 因为我想允许传递参数,例如 --加载abcxyz

添加 action='store_true'nargs='?' 会产生以下错误:

    parser.add_argument('-l', '--load', nargs='?', metavar='path', help='Load all JSON files recursively in path', action='store_true')
File "/usr/lib/python3.6/argparse.py", line 1334, in add_argument
action = action_class(**kwargs)
TypeError: __init__() got an unexpected keyword argument 'nargs'

最佳答案

您可以使用in运算符来测试是否为(子)命令定义了选项。您可以将定义的选项的值与其默认值进行比较,以检查该选项是否在命令行中指定。

#!/usr/bin/env python3
import argparse
import os

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-l', '--load',
dest='load', nargs='?', default=None,
help='Load all JSON files recursively in path')

args = parser.parse_args()

'some_non_exist_option' in args # False
'load' in args # True
if args.load is not None:
...

关于Python argparse 检查标志是否存在,同时也允许参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45140656/

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