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 testeEle 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 scriptAcrescentando 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