Сообщить об ошибке.

Метод parse_args() объекта ArgumentParser модуля argparse в Python

Синтаксис:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument(...)
args = parser.parse_args(args=None, namespace=None)

Параметры:

  • args=None - список строк для анализа. По умолчанию берется из sys.argv,
  • namespace=None - объект, который принимает атрибуты. По умолчанию это новый пустой объект пространства имен.

Возвращаемое значение:

Описание:

Метод parse_args() объекта ArgumentParser преобразует строки параметров командной строки в объекты и назначает их в качестве атрибутов пространства имен.

Метод parser.parse_args() возвращает заполненное пространство имен.

Предыдущие вызовы метода parser.add_argument() точно определяет, какие объекты создаются и как они назначаются.

Аргумент args.

При тестировании программы в интерпретаторе Python может быть полезно передавать какие то параметры для синтаксического анализа объекту ArgumentParser, отличные от извлекаемых по умолчанию их sys.argv. Это можно сделать, передав список строк в метод parser.parse_args().

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument(
...     'integers', metavar='int', type=int, choices=range(10),
...     nargs='+', help='an integer in the range 0..9')
>>> parser.add_argument(
...     '--sum', dest='accumulate', action='store_const', const=sum,
...     default=max, help='sum the integers (default: find the max)')
>>> parser.parse_args(['1', '2', '3', '4'])
# Namespace(accumulate=<built-in function max>, integers=[1, 2, 3, 4])
>>> parser.parse_args(['1', '2', '3', '4', '--sum'])
# Namespace(accumulate=<built-in function sum>, integers=[1, 2, 3, 4])

Аргумент namespace.

Аргумент namespace представляет собой простой класс argparse.Namespace, используемый по умолчанию методом parser.parse_args() для создания объекта, содержащего атрибуты, который возвращается после анализа и присвоения атрибутов.

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> args = parser.parse_args(['--foo', 'BAR'])
>>> vars(args)
# {'foo': 'BAR'}

В некоторых случаях полезно, чтобы объект argparse.ArgumentParser назначал атрибуты уже существующему объекту, а не новому объекту пространства имен. Этого можно добиться, указав аргумент namespace:

>>> class C:
...     pass
...
>>> c = C()
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.parse_args(args=['--foo', 'BAR'], namespace=c)
>>> c.foo
# 'BAR'