Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ffunenga

docopts

Mensagens Recomendadas

Virneto

Não queres deixar aí a tua opinião e trocar por miúdos? É que, (sem contar com o inglês do orador ou qualidade do vídeo/som), isto é muita areia para mim......ainda!! :(


"Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Linuxando.com | ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ffunenga

Vou tentar deixar uma explicação daquilo que pude apurar até ao momento.

Quando lanças um programa pela linha de comandos, normalmente tens a opção de colocar argumentos de entrada para poder atalhar certas configurações (isto é pouco utilizado em Windows). Por exemplo: $ ./app.py --verbose -h www.google.pt -p 80

Na universidade, aprendi a desenrrascar este tipo de coisas ao analisar o argc,argv na linguagem C com um bloco gigante de ifs e elses... embora existam formas de tornar este processo mais simples, dá sempre algum trabalho.

Em Python, pelo contrário, existem duas abordagens para realizar esta análise de forma sistemática e simples: são os modulos optparse e argparse (principalmente o segundo). O workflow tipico é: criar um objecto Argparser, e depois utilizar os seus métodos para ir adicionando as opções e flags que estarão disponiveis na linha de comandos. No final, corres um metodo dessa instância para analisar o sys.argv e retornar um dicionário com os argumentos e seus valores.

Mesmo assim, a malta deste projecto (docopt) achou que ainda era possivel simplificar/melhorar este processo: crias uma string embutida no código com a tua mensagem de usage, e o modulo vai ser capaz de interpretar automaticamente o que lá escreveste de forma a fazer o parsing da linha de comandos como pretendes.

A vantagem é obvia: muito menos linhas no teu código para definires a mesma coisa. Além disso, pelo que percebi da explicação do orador sobre o a definição de um comando (o link [1] aponta directamente para o momento em que ele diz isso), é possivel fazeres coisas com este modulo que nenhum dos outros dois que eu já referi permitem. Tal como ele diz e bem, não tenho a certeza se conseguia implementar a definição que ele pretende com o argparse.

[1]

https://www.youtube.com/embed/pXhcPJK5cMc?start=605&feature=oembed

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
eatg75

Na universidade, aprendi a desenrrascar este tipo de coisas ao analisar o argc,argv na linguagem C com um bloco gigante de ifs e elses... embora existam formas de tornar este processo mais simples, dá sempre algum trabalho.

Para o C ja existe o Gengetop ha muito temp! Que por acaso e muito interresante.

Gostei da abordagem do docopt para definir as opcoes, comandos, etc, ... O docopt para ser muito KISS (Keep It Simple Stupid)


Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.