Python Glossary English

все Python 3argparseпонятие

argparse.ArgumentParser

парсер

Разборщик аргументов командной строки: описываете аргументы через add_argument(), а parse_args() превращает список строк в Namespace с готовыми значениями.

Синтаксис

parser = argparse.ArgumentParser(prog=None, description=None, formatter_class=..., allow_abbrev=True, exit_on_error=True)

При ошибке ввода parse_args() не бросает обычное исключение: печатает usage в stderr и вызывает sys.exit(2), то есть SystemExit, который except Exception не ловит. Чтобы получить исключение ArgumentError, нужен exit_on_error=False. Длинные опции по умолчанию понимаются по префиксу: '--verb' сработает как '--verbose', пока allow_abbrev=False это не запретит. Без аргумента parse_args() читает sys.argv[1:], поэтому в тестах передавайте список явно.

Примеры

import argparse
parser = argparse.ArgumentParser(prog='app')
parser.add_argument('--n', type=int, default=1)
parser.add_argument('--verbose', action='store_true')
print(parser.parse_args(['--n', '3']))  # → Namespace(n=3, verbose=False)
print(parser.parse_args(['--verb']))  # → Namespace(n=1, verbose=True) — префикс опции
# Python 3.9+
import argparse
parser = argparse.ArgumentParser(prog='app', exit_on_error=False)
parser.add_argument('--n', type=int)
try:
    parser.parse_args(['--n', 'x'])
except argparse.ArgumentError as e:
    print(e)  # → argument --n: invalid int value: 'x'
import argparse
parser = argparse.ArgumentParser(prog='app')
try:
    parser.parse_args(['--oops'])
except SystemExit as e:
    print('код выхода', e.code)  # → код выхода 2

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности