все 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Сообщить о неточности