Optparse: Uso na ação arg callback variável não indica que parâmetros adicionais são necessários

votos
3

Eu tenho implementado no meu código python um retorno de chamada para argumentos variáveis semelhantes ao que pode ser encontrada aqui:
hxxp: //docs.python.org/library/optparse.html#callback-example-6-variable-arguments

Adicionando a opção como esta:

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

O problema é que não há nenhuma indicação para o usuário que a opção requer entrada extra:

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

Existe alguma maneira de mudar o uso do optparse de modo que o uso irá imprimir algo como:

-c=LIST, --callback=LIST

Obrigado pela ajuda!
Ben

Publicado 19/05/2009 em 17:10
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Isso envolve monkeypatching e pode não ser a melhor solução. Por outro lado, parece funcionar.

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

Saída:

Usage: opt.py [options]

Options:
  -h, --help            show this help message and exit
  -c LIST, --callback=LIST
                        do stuff
Respondeu 19/05/2009 em 20:30
fonte usuário

votos
1

utilizador a metavarpalavra-chave argumento:

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

Referência: http://docs.python.org/library/optparse.html

Respondeu 19/05/2009 em 17:17
fonte usuário

votos
0

optparse não exibe a indicação para um argumento adicional se o tipo for Nenhum (padrão). Se você especificar o tipo e metavar ele é exibido na ajuda:

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

Saída:

Options:  
  -h, --help            show this help message and exit
  -c LIST, --callback=LIST
                        do stuff
Respondeu 26/08/2015 em 07:43
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more