import argparse parser = argparse.ArgumentParser() parser.add_argument(...) args = parser.parse_args(args=None, namespace=None)
args=None
- список строк для анализа. По умолчанию берется из sys.argv
,namespace=None
- объект, который принимает атрибуты. По умолчанию это новый пустой объект пространства имен.argparse.Namespace
.Метод 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'