Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 1, 2014 12:48:18

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

Как сконструировать вот такой парсинг:

 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() но там все аргументы взаимоисключающие :(

Офлайн

#2 Сен. 1, 2014 13:53:13

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

Внутри группы полученной с помощью add_mutually_exclusive_group() можно создавать вложенные группы

Кстати

([-f FROM] [-t TO])
не корректно.
Допускается как параметр пустые скобки?

Отредактировано scopichol (Сен. 1, 2014 13:54:41)

Офлайн

#3 Сен. 1, 2014 16:49:19

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

scopichol
Внутри группы полученной с помощью add_mutually_exclusive_group() можно создавать вложенные группы
А можно примерчик, если не затруднит ;)

Офлайн

#4 Сен. 1, 2014 17:09:23

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

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()

Отредактировано scopichol (Сен. 1, 2014 17:09:39)

Офлайн

#5 Сен. 1, 2014 17:52:03

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

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 не может быть

Отредактировано agryn (Сен. 1, 2014 17:53:49)

Офлайн

#6 Сен. 1, 2014 18:03:32

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

Тогда для –from и –to обычную группу не mutually

Офлайн

#7 Сен. 1, 2014 19:02:52

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

Что то не фурычит :(

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

Офлайн

#8 Сен. 2, 2014 09:31:55

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

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 (Сен. 2, 2014 10:57:06)

Офлайн

#9 Сен. 2, 2014 10:57:15

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

argparse группировка аргументов в add_mutually_exclusive_group()

Недоделаный какой то парсер.
mutually группа хранит аргументы в родительском контейнере
Боюсь не получится

Отредактировано scopichol (Сен. 2, 2014 10:57:27)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version