Ajuda com Argparse

13 views
Skip to first unread message

Mauricio José

unread,
Aug 20, 2012, 1:50:21 PM8/20/12
to pyth...@googlegroups.com
Pessoal,

Eu tenho um script (feito a um tempo já!) que utiliza o módulo optparse para pegar as opções e os argumentos. No caso do optparse, eu consigo receber ambos utilizando o seguinte código:

(opcoes, argumentos) = parser.parse_args()

Porém, agora eu gostaria de fazer o mesmo com o módulo argparse, já que o optparse está depreciado.
Só que me deparei com o problema de que o argparse não permite pegar os argumentos utilizando o método "parse_args()".
Na documentação oficial, sugerem que utilizemos o método add_argument() para tratar argumentos posicionais. Com isto, meu código ficou mais ou menos assim:


parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("-h", "--help",
                  action="store_true", dest="verbose",
                  help="Exibe esta mensagem e abandona")

parser.add_argument(action="append", dest="opt") 
                

print parser.parse_args()


Quando eu faço a chamada: $ ./meu_script.py teste
Ele retorna: Namespace(opt=['teste'], verbose=False)

Porém, quando eu faço a chamada:$ ./meu_script.py teste entrada script
Ele retorna: meu_script.py: error: unrecognized arguments: entrada script

Acrescentando a opção nargs="*" no método add_argument(), me faria receber uma lista com uma lista do argumentos,
ou seja: Namespace(opt=[['teste','entrada','script']], verbose=False)

Resumindo, eu gostaria que o argparse me permitisse tratar quando eu tiver um scritp com opções, e fizesse a seguinte chamada ao script:
./meu_script.py teste -o opção1 que -p opção2 não funciona


(somente a caracter ilustrativo)
opções = [ '-o' : 'opção1', '-p' : 'opção2' ]
argumentos = ['teste', 'que', 'não', 'funciona']


--
att,
Maurício José


"O próximo grande salto evolutivo da humanidade será a descoberta de que cooperar é melhor que competir"
Prof. Pietro Ubaldi

Reply all
Reply to author
Forward
0 new messages