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!