Найти - Пользователи
Полная версия: argparse группировка аргументов в add_mutually_exclusive_group()
Начало » Python для экспертов » argparse группировка аргументов в add_mutually_exclusive_group()
1
agryn
Как сконструировать вот такой парсинг:
 someprog [-h] [([-f FROM] [-t TO]) | --period PERIOD]
Для вот такого например
 usage: someprog [-h] [-f FROM] [-t TO] [--period PERIOD]
    parser = argparse.ArgumentParser(
        description="%(prog)s - Utility to tisplays information about historical xxxx usage",
        epilog="Run %(prog)s",
        prog="someprog")
    parser.add_argument('-f', '--from',
                        help='run report from date and time in YYYY-MM-DD HH:MM format; if not present last 10 minutes '
                             'are assumed')
    parser.add_argument('-t', '--to',
                        help='run report up to date and time in YYYY-MM-DD HH:MM format; if not present, reports '
                             'results up to now')
    parser.add_argument('--period',
                        help='time period; specify minutes with m,  h - hours, days with d, and values: today, '
                             'yesterday; 5m - last 5 minutes, 4h -- last four hours, 2d - last 2 days, as well as today')
То есть для вывода неких данных нужно задавать временный интервал с помощью –period или –from –to
вместе –period с –from или –to не может быть
Есть .add_mutually_exclusive_group() но там все аргументы взаимоисключающие :(
scopichol
Внутри группы полученной с помощью add_mutually_exclusive_group() можно создавать вложенные группы

Кстати
([-f FROM] [-t TO])
не корректно.
Допускается как параметр пустые скобки?
agryn
scopichol
Внутри группы полученной с помощью add_mutually_exclusive_group() можно создавать вложенные группы
А можно примерчик, если не затруднит ;)
scopichol
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_mutually_exclusive_group()
group2 = group.add_mutually_exclusive_group()
group2.add_argument('--from', action='store_true')
group2.add_argument('--to', action='store_false')
group.add_argument('--period', action='store_false')
parser.print_help()
agryn
usage: PROG [-h] [[--from | --to] --period]
optional arguments:
  -h, --help  show this help message and exit
  --from
  --to
  --period

А если нужно что бы –from и –to были вместе или по отдельности ?
agryn
вместе –period с –from или –to не может быть
scopichol
Тогда для –from и –to обычную группу не mutually
agryn
Что то не фурычит :(
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_mutually_exclusive_group()
group2 = group.add_argument_group()
group2.add_argument('--from', action='store_true')
group2.add_argument('--to', action='store_false')
group.add_argument('--period', action='store_false')
parser.print_help()
usage: PROG [-h] [--from] [--to] [--period]
optional arguments:
  -h, --help  show this help message and exit
  --period
scopichol
print_help не корректно отображает
Например в первоначальном варианте не печатает символ | перед –period
если перенести период вперед
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_mutually_exclusive_group()
group.add_argument('--period', action='store_true')
group2 = group.add_mutually_exclusive_group()
group2.add_argument('--from', action='store_true')
group2.add_argument('--to', action='store_true')
parser.print_help()
то не печатает закрывающую скобку
Нужно проверять пофункционалу

scopichol
Недоделаный какой то парсер.
mutually группа хранит аргументы в родительском контейнере
Боюсь не получится
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB