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