quinta-feira, 11 de outubro de 2012

Tratamento de parâmetros em scripts python

Boa noite!

Passando por aqui pra indicar uma ótima biblioteca pra facilitar a vida de quem precisa criar scripts em python. Quer coisa mais chata que a definição dos parâmetros suportados pelo script que vc está criando?

Existe um módulo chamado docopt que é simplesmente, fenomenal.

A instalação pode ser feita através do pip:
ubuntu$ sudo pip install docopt

Basicamente ela utiliza a docstring definida no início do script e já habilita seu script a receber toda a parametrização que estiver por lá.

Os parâmetros passados são todos adicionados à um dicionário que pode ser facilmente tratado.

Pra exemplificar o que estou dizendo, segue um exemplo disponível no próprio projeto.:


islan@tsunami ~$ cat teste.py
#!/usr/bin/python
"""Naval Fate.

Usage:
  naval_fate.py ship new <name>...
  naval_fate.py ship <name> move <x> <y> [--speed=<kn>]
  naval_fate.py ship shoot <x> <y>
  naval_fate.py mine (set|remove) <x> <y> [--moored|--drifting]
  naval_fate.py -h | --help
  naval_fate.py --version

Options:
  -h --help     Show this screen.
  --version     Show version.
  --speed=<kn>  Speed in knots [default: 10].
  --moored      Moored (anchored) mine.
  --drifting    Drifting mine.
"""

from docopt import docopt

if __name__ == '__main__':
    arguments = docopt(__doc__, version='Naval Fate 2.0')
    print(arguments)

A execução do exemplo anterior resulta em:

islan@tsunami ~$ ./teste.py ship new teste
{'--drifting': False,
 '--help': False,
 '--moored': False,
 '--speed': '10',
 '--version': False,
 '<name>': ['teste'],
 '<x>': None,
 '<y>': None,
 'mine': False,
 'move': False,
 'new': True,
 'remove': False,
 'set': False,
 'ship': True,
 'shoot': False}
islan@tsunami ~$

Posso estar parecendo exagerado, mas realmente adorei o projeto.
O melhor de tudo: há versões do projeto já disponíveis para outras linguagens como php, javascript.

O criador do projeto falou na PyCon UK 2012. Vale a pena assistir.

Enjoy!

Nenhum comentário:

Postar um comentário