argparse

import argparse

import os
import sys

arg_parser = argparse.ArgumentParser(description='arg parser description')

my_parser.add_argument(
    'Path',
    metavar='path',
    type=str,
    help='the path',
)

my_parser.parse_args(['/home/ilnurgi/'])
# Namespace(Path='/home/ilnurgi/')

my_parser.parse_args([])
# usage: script.py [-h] path
# script.py: error: the following arguments are required: path

my_parser.parse_args([-h])
"""
usage: script.py [-h] path

arg parser description

positional arguments:
path        the path

optional arguments:
-h, --help  show this help message and exit
"""

Action()

class argparse.Action(option_strings, dest, nargs=None, const=None, default=None, type=None, choises=None, required=None, help=None, metavar=None)

Действие для аргумента

class MyAction(Action):

    def __init__(self, option_strings, dest, nargs, **kwargs):
        """"""

    def __call__(self, parser, namespace, values, option_string=None):
        """"""

arg_parser.add_argument('-i', '--input', action=MyAction, type=int)

ArgumentParser()

class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)
  • prog - название программы, которое будет отображаться в консоли. По умолчанию будет название скрипта

  • usage - текст примера использования

  • description - описание программы, которое будет выводиться в консоли

  • epilog - текст, который будет выведен в консоли после всей информации

  • parents - список argparse.ArgumentParser() ключи которой будут включены в текущий объект

  • formatter_class - объект, форматирующий вывод сообщения помощи.

    • argparse.HelpFormatter()

    • argparse.RawDescriptionHelpFormatter()

    • argparse.RawTextHelpFormatter()

    • argparse.ArgumentDefaultsHelpFormatter()

    • argparse.MetavarTypeHelpFormatter()

  • prefix_chars - префикс для параметрв

  • fromfile_prefix_chars - префикс для параметра, который указывает на файл с параметрами. Если параметров много, то можно их передать через файл.

  • allow_abbrev - учитывать абреавитуры Например если есть аргумент –input, то с консоли его можно перадать и как –input, и как –inpu, –inp, –in.

  • add_help - добавить автоматический параметр -h, хелпер.

arg_parser = ArgumentParser(
    prog='myprog',
    description='argparse description',
    usage='%(prog)s [options] path',
    epilog='from ilnurgi',
    prefix='/',
    fromfile_prefix_chars='@',
)

arg_parser.parse_args(['@params.txt'])
# Namespace()
add_argument(...values, action='store', nargs, const, default, type, choises, required, help, metavar, dest)

Добавляет параметр в парсер

  • values - параметры для парсинга, если указан без префикса, то параметр считается как позиционный

  • action - что делать с параметром

    • store - сохранить в сам объект

    • store_const - если параметр указан, то взять константу из парсера

    • store_true - если параметр указан, то значение будет False

    • store_false - если параметр указан, то значение будет True

    • append - может быть указано несколько раз, все праметры будут собраны в список

    • append_const - может быть указано несколько раз, константный значение парсера собрать в список

    • count - сколько раз параметр был указан

    • help - показать хелп и выйти

    • version - показать версию программы и выйти

    • argparse.Action() - свой обработчик

  • nargs - указывает количесвто параметров, которое должно быть передано

    • число - конкретное значение

    • ? - одно значение

    • * - 0 или несколько

        • 1 или несколько

    • argparse.REMAINDER - оставшиеся аргументы

  • const - значение по умолчанию, либо callable объект, который вернет значение

  • default - значение по умолчанию, либо callable объект, который вернет значение

  • type - тип значения

  • choises - перечисление возможных значений

  • required - булево, поле обязательно

  • help - текст помощи

  • metavar - доп информация по атрибуту, например для поля с датой формат даты можно указать

  • dest - название переменной, куда поместим параметр

# позиционный аргумент Path, обязательный
arg_parser.add_argument(
    'Path',
    metavar='path',
    type=str,
    help='the path',
)

# позиционный необязательный аргумент
arg_parser.add_argument(
    'Path',
    metavar='path',
    type=str,
    help='the path',
    # за счет этого параметр не обязательный
    nargs='?'
)

# опциональный аргумент -v, --verbose
arg_parser.add_argument(
    '-v',
    '--verbose',
    action='store_true',
    help='optional argument',
)

arg_parser.parse_args(['/home/ilnurgi/'])
# Namespace(Path='/home/ilnurgi/')
arg_parser.add_argument(
    '--input',
    action='store',
    type='int',
    required=True,
)

arg_parser.parse_args(['--input', 42])
# Namespace(input=42)

arg_parser.parse_args(['--inpu', 42])
# Namespace(input=42)

arg_parser.parse_args(['--inp', 42])
# Namespace(input=42)

arg_parser.parse_args(['--in', 42])
# Namespace(input=42)
arg_parser.add_argument('-b', action='store_const', const=42)

arg_parser.parse_args(['-b'])
# Namespace(b=42)
add_argument_group(title=None, description=None)
group = arg_parser.add_argument_group()
group.add_argument()
add_subparsers(title=None, description=None, prog=None, parser_class=None, action=None, option_string=None, dest=None, required=None, help=None, metavar=None)
subparsers = arg_parser.add_subparsers(help='subparser')
first_subparser = subparsers.add_parser()
first_subparser.add_argument()
format_help()
format_usage()
get_default(key)

Возвращает значение по умолчанию для ключа

parse_args(args=None, namespace=None)

Парсит аргументы

args_parsed = arg_parser.parse_args()
print_help()

Выводит текст с текстом помощи

print_usage()
set_defaults()

Устанавливает параметры по умолчанию