Processar (parser) opções da linha de comando em Python
Dica publicada em Python / Introdução
Processar (parser) opções da linha de comando em Python
Para fazer um parser das opções da linha de comando no Python usamos o getopt, essa "função" existe em diversas linguagens, inclusive para shell script, mas aqui vamos tratar apenas da versão para Python.
Primeiro devemos importar o módulo:
Para usar a primeira coisa que devemos criar é a lista de argumentos válidos:
Sempre que houver ':' após um argumento, isso significa que o argumento precisa de um parâmetro, exemplo:
comando -o <valor>
Agora precisamos validar os argumentos vindos da linha de comando:
A variável optlist conterá uma lista de tuplas, um exemplo da lista do comando:
comando -h -o thuck
seria:
[('-h',''),('-o','thuck')]
A variável args conterá qualquer coisa que não for uma opção, ou seja, '-h buga', o buga irá para args e não para a tupla do -h, já que na lista_arg definimos o 'h' sem o ':'.
Feito isso precisamos tratar o caso de alguém passar um parâmetro errado:
Agora basta fazer um loop e brincar com os argumentos.
Primeiro devemos importar o módulo:
import getopt
Para usar a primeira coisa que devemos criar é a lista de argumentos válidos:
lista_arg = 'hao:s:'
Sempre que houver ':' após um argumento, isso significa que o argumento precisa de um parâmetro, exemplo:
comando -o <valor>
Agora precisamos validar os argumentos vindos da linha de comando:
optlist , args = gnu_getopt(sys.argv[1:],lista_arg)
A variável optlist conterá uma lista de tuplas, um exemplo da lista do comando:
comando -h -o thuck
seria:
[('-h',''),('-o','thuck')]
A variável args conterá qualquer coisa que não for uma opção, ou seja, '-h buga', o buga irá para args e não para a tupla do -h, já que na lista_arg definimos o 'h' sem o ':'.
Feito isso precisamos tratar o caso de alguém passar um parâmetro errado:
try:
optlist , args = gnu_getopt(sys.argv[1:],lista_arg)
except getopt.GetoptError:
print "ERRO\n"
sys.exit(1)
optlist , args = gnu_getopt(sys.argv[1:],lista_arg)
except getopt.GetoptError:
print "ERRO\n"
sys.exit(1)
Agora basta fazer um loop e brincar com os argumentos.