Python Scripting
Desde a época dos dinossauros (aquela galera do perl e do cobol) uma infinidade de linguagens foram utilizadas nesta tarefa. Os scripts shell são grandes vedetes nesse cenário, mas outros concorrentes a altura são fáceis de encontrar. Um deles é a linguagem de programação python.
Como linguagem de programação, o python se destaca neste tipo de tarefa. É simplesmente fácil criar um programa inteiro e bem organizado para executar um conjunto de tarefas qualquer e com a vantagem de ser multi-plataforma. Por conta disso, e pelo fato de eu ter escrito uma série de programinhas de automação ao longo do último ano, resolvi fazer uma postagem dando algumas dicas de como escrever um programa simples, em linha de comando, com python. A ideia é que sirva de exemplo para quem está começando.
Por onde começar...
Acredito que a primeira coisa que podemos fazer aqui é revisar alguns conceitos para nos norteamos. Faça-mos isso respondendo a duas dúvidas:
- Como executar um script python?
- Como pegar parâmetros de linha de comando?
Como executar um script python?
Essa aqui é legal pois envolve uma série de detalhes importantes. A primeira coisa a saber é que para executar o conteúdo de um script python (assumindo que o python está corretamente instalado) basta fornecer o arquivo .py onde está o código como argumento para o interpretador python. Algo assim funciona:
echo 'print "Hello world!"' > hello.py
python hello.py
Outra forma é importar um módulo python a partir de outro módulo utilizando import. Em cima dessa informação já temos um detalhe a adicionar. Caso você queira utilizar seu script python (que é na verdade um módulo!) como um executável, sem a necessidade de invocá-lo utilizando o interpretador, explicitamente, você deve adicionar uma linha especial ao seu script, que irá informar como ele deve ser executado. No caso do python, teríamos algo assim:
echo '#!/usr/bin/env python' > hello.py
echo 'print "Hello world!"' >> hello.py
# adiciona permissão de execução ao script (linux)
chmod +x hello.py
# executa o script
./hello.py
A primeira linha do arquivo hello.py informa que o script deve ser executado utilizado o interpretador python definido como padrão pelo ambiente.
Pronto, você já sabe executar scripts python. Parabéns! rsrsrs Continuemos.
Como pegar parâmetros de linha de comando?
Já sabendo como executar um script python, a segunda coisa importante a saber é como pegar parâmetros da linha de comando. Essa parte também é fácil. Usar-se-á o módulo sys. Ele te dá acesso aos argumentos em linha de comando fornecidos pelo usuário.
#!/usr/bin/env python
import sys
print sys.argv
Note que argv é uma lista de palavras, sendo a primeira o nome do arquivo .py em execução. Por isso, caso você queira imprimir apenas os parâmetros informados pelo usuário, o script ficaria assim:
#!/usr/bin/env python
import sys
print sys.argv[1:]
Existem módulos que facilitam o tratamento de parâmetros de usuário mas vou deixar para falar deles em outras postagens. Continuemos!
Escrevendo nosso primeiro script útil!
Acabaram os exemplos "café com leite". Agora é hora de fazer algo útil. Que tal um script que pega todos os arquivos informados e os compacta em formato zip? Que tal? Faça-mos!
Análise
Para esta tarefa, dois módulos nos bastam. São eles o zipfile e sys, ambos disponíveis em uma instalação padrão do python.
#!/usr/bin/env python
import sys, zipfile
# cria nosso arquivo zip
zfile = zipfile.ZipFile('destino.zip', mode='w')
# escreve o conteudo dos arquivos informados em zfile
for filename in sys.argv[1:]:
zfile.write(filename)
zfile.close()
Prontinho. É evidente que algumas verificações poderiam ser feitas como garantir que filename realmente existe, entre outras cossitas, mas isso fica como tarefinha para você leitor. Sugiro também que você adapte o script acima para que ele possa funcionar como um módulo e não somente como um script.
É isso. Críticas e sugestões são bem vindas = ]