Ir para o conteúdo

Option parser

Introdução

O Option Parser, é um método presente no módulo optparser, que permite que o utilizador passe flags a um programa, como por exemplo -v ou --verbose.

from optparse import OptionParser

arguments_list = OptionParser()

arguments_list.add_option("-f", "--file", action = "store", 
type = "string", dest = "file", help = "Path to file.")

arguments_list.add_option("-v", "--verbose", action = "store_true", 
dest = "verbose", help = "Verbose mode.")

arguments_list.add_option("-nf", "--no_folder", action = "store_false", 
default = True, dest = "folder", help = "Don't create folders)

(options, extra_stuff) = arguments_list.parse_args()

Este código faz o import da parte do módulo que queremos, e após colocarmos a variável arguments_list a aceitar os métodos do módulo, podemos começar a adicionar os comandos.

O método add_option, define uma flag, que passará a ser reconhecida pelo programa. Primeiro de tudo, coloca-se o nome da flag (no primeiro caso, -f e --file), sendo que depois deve-se colocar a acção que o script deve de efectuar (na flag -f, a acção é store). Caso não seja especificada nenhuma acção, esta torna-se store por default. Ao colocar a acção store, deve-se dizer ao programa que tipo de opção ele deve esperar, sendo que neste caso é uma string (type = "string").

Para além da acção store, existem outras, como o store_true e o store_false. A acção store_true guarda o valor True numa variável (que vou explicar um pouco mais à frente), ao passo que a acção store_false guarda o valor False.

Por fim, as opções têm de ser guardadas em algum lado, sendo que para isso temos que indicar o seu destino com a opção dest (exemplo: dest = "file"). Isso irá neste caso armazenar a informação que é passada a essa flag numa variável chamada file (que vou mais abaixo explicar como é que acedem a ela).

Finalmente, podem colocar uma opção help, pois este módulo cria uma flag por default que é a -h ou --help, que imprime no terminal uma ajuda que pode ser personalizada pelo texto que colocarem na opção help.

Após todas as opções definidas, está na altura de fazer com que o programa apanhe as flags. Para isso, usamos o comando arguments_list.parse_args() que irá verificar todas as flag que forem passadas na linha de comandos.

Todas as flags que o programa reconhecer (ou seja, aquelas que foram definidas), ele irá armazenar os seus valores na primeira variável definida (neste caso, é options), sendo que todas as outras flags e opções serão guardadas na variável extra_stuff.

Por fim, para aceder à informação que vocês quiserem, é só chamarem a variável que armazenou as flags reconhecidas pelo programa (neste exemplo, "options") juntamente com a opção "dest" que definiram nas flags.

Por exemplo, escreviam na consola:

./programa.py -f /home/rolando/uma/pasta/ficheiro.txt

O programa iria então reconhecer a flag -f e iria colocar o valor /home/rolando/uma/pasta/ficheiro.txt na variável options.file.

usage: <yourscript> [[options]] arg1 arg2

options:
  -h, --help            show this help message and exit
  -v, --verbose         make lots of noise [[default]]
  -q, --quiet           be vewwy quiet (I'm hunting wabbits)
  -f FILE, --filename=FILE
                        write output to FILE
  -m MODE, --mode=MODE  interaction mode: novice, intermediate, or
                        expert [[default:|intermediate]]

Ver também