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