У меня есть скрипт 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 значения: test
или prod
. Параметр env
должен быть необязательным, если значения не предоставлены, он должен принимать значения по умолчанию как prod
, иначе он должен хранить любое из предоставленных значений (test / prod). если значение env не передается, значением по умолчанию должно быть prod
Я попытался сделать параметр env
необязательным, используя nargs
, но когда мой скрипт выполняется, он выдает ошибку.
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
не указана.
Как мне изменить свой сценарий?