Optparse: использование переменной arg callback не указывает на необходимость дополнительных параметров - PullRequest
3 голосов
/ 19 мая 2009

Я реализовал в своем коде Python обратный вызов для переменных переменных, аналогичный тому, что можно найти здесь:
hxxp: //docs.python.org/library/optparse.html#callback-example-6-variable-arguments

Добавление такой опции:

parser.add_option("-c", "--callback", dest="vararg_attr", action="callback", callback=vararg_callback)

Проблема в том, что для пользователя нет указания, что опция требует дополнительного ввода:

Options:  
    -h, --help      show this help message and exit  
    -c, --callback

Есть ли способ изменить использование optparse так, чтобы оно печатало что-то вроде:

-c=LIST, --callback=LIST

Спасибо за вашу помощь!
Бен

Ответы [ 3 ]

2 голосов
/ 19 мая 2009

Это включает в себя создание обезьян и может быть не лучшим решением. С другой стороны, это похоже на работу.

from optparse import OptionParser, Option

# Complete hack.
Option.ALWAYS_TYPED_ACTIONS += ('callback',)

def dostuff(*a):
    pass

parser = OptionParser()
parser.add_option("-c",
                  "--callback",
                  dest="filename",
                  action="callback",
                  callback=dostuff,
                  metavar='LIST',
                  help='do stuff',
                  )

(options, args) = parser.parse_args()

Выход:

Usage: opt.py [options]

Options:
  -h, --help            show this help message and exit
  -c LIST, --callback=LIST
                        do stuff
1 голос
/ 19 мая 2009

пользователь аргумент metavar ключевое слово:

parser.add_option("-c", "--callback", dest="vararg_attr", action="callback", callback=vararg_callback, metavar='LIST')

Ссылка: http://docs.python.org/library/optparse.html

0 голосов
/ 26 августа 2015

optparse не отображает указание для дополнительного аргумента, если типом является None (по умолчанию). Если вы указываете тип и метавар, это отображается в справке:

parser.add_option("-c", "--callback",
                  dest="vararg_attr",
                  type="string", 
                  metavar="LIST", 
                  action="callback", 
                  callback=vararg_callback,
                  help="do stuff")

Выход:

Options:  
  -h, --help            show this help message and exit
  -c LIST, --callback=LIST
                        do stuff
...