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]]