gpt4 book ai didi

python - 如何在 python 中使用 argparse 函数将可选参数传递给 python 类

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:59 25 4
gpt4 key购买 nike

我有一个 python 脚本 script.py 具有以下 init 函数

def __init__(self):
"""init method for the class."""
parser = argparse.ArgumentParser(description="test")
parser.add_argument('-u', '--user', dest='user',
default='', required=True,
action="store", help="the script running user")
parser.add_argument('-i', '--url', dest='url',
default="", required=True,
action="store", help="url")
parser.add_argument('-e', '--env', nargs='*',
dest='env',help="the env type")
parsers = parser.parse_args()
self.user = parsers.user.strip()
self.url = parsers.url.strip()
self.env = parsers.args.env.strip()

env 类型存储 2 个值,testprodenv 参数应该是可选的,如果没有提供值,它应该采用默认值作为 prod 否则它应该存储提供的任何值(测试/生产)。如果没有传递 env 的值,默认值应该是 prod我尝试使用 nargsenv 参数设置为可选参数,但是当我的脚本执行时它会抛出错误。

Traceback (most recent call last):
File "script.py", line 185, in <module>
obj = script()
File "script.py", line 66, in __init__
self.env_type = parsers.args.env_type.strip()
AttributeError: 'Namespace' object has no attribute 'args'

我正在执行我的脚本

python script.py -u <user> -i <url> -e <env>

理想情况下,即使未提供 -e 选项,我也希望我的脚本能够执行。我应该如何更改我的脚本?

最佳答案

如果您只想将 env 设置为“prod”或“test”,您可以使用 choices ( docs ),使用默认值:

parser.add_argument('-e', '--env', choices=['prod', 'test'], default='prod', help="环境类型")

如果将其他内容传递给 --env,这将引发错误。

请注意,带有破折号的标志,如 -e --env 在 argparse ( docs ) 中被假定为可选

关于python - 如何在 python 中使用 argparse 函数将可选参数传递给 python 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55756928/

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