Como resolver problemas com Python e automatizar processos com programação | Python Aula #2

 

Ola, Cássio Augusto aqui e hoje eu vou mostrar o processo que eu uso para resolver problemas usando programação para automatizar tarefas repetitivas. Esse vídeo é voltado principalmente a programadores iniciantes.
Certa vez eu tive uma situação real que eu precisava renomear uma grande quantidade de arquivos dentro de uma pasta seguindo determinados padrões. A História é a seguinte:
Eu precisava renomear milhares de fotos em uma pasta inserindo zeros a esquerda até completar o total de 8 caracteres no nome do arquivo.
É bom que você pense como um programador ao invés de sair fazendo busca de coisas prontas na internet. Para você presa pensar em como resolver esse problema usando algoritmos e quais as possíveis soluções para isso.
Todo programa de computador só existe por causa dos algorítimos.
Solução 1
A solução mais comum e também a mais demorada é renomear todos os arquivos manualmente, essa é uma solução que um usuário leigo provavelmente pensaria.
Nesse caso como se trata de dezenas de milhares de arquivos essa solução é inviável.
Solução 2
A solução que um usuário avançado chegaria é procurar algum programa pronto que faça isso sozinho. essa é provavelmente a solução mais eficaz, a não ser que você queira aprender mais sobre programação e praticar mais, e uma das melhores formas de fazer isso é usar os teus conhecimentos de programação para resolver problemas. Mesmo que você já seja programador, pode resolver o mesmo problema com outras linguagens e aprender mais.
Eu pesquisei na internet e uma pessoa recomendou O THUNAR BULK RENAME UTILITY do XFCE no linux.
Encontrei também algumas soluções prontas para windows.
Nessa solução no caso algo de algo não livre para o windows por exemplo, pra resolver um simples problema como esse temos o risco de colocar adware ou spyware no computador ou ter um software que vai resolver o problema hoje mas daqui a 45 dias quando você precisar usar denovo vai ter que pagar ou vai ter que buscar outra solução.
Provavelmente você vai baixar nos famigerados sites gratuitos e cheio de propagandas que levam pra links maliciosos com cavalos de troia e propaganda de piramide financeira.
Lembrando que estamos aqui pra aumentar os conhecimentos de programação para automatização de processos, então vamos pular as soluções prontas.
Solução 3
A solução que um programador pensaria é criar um software que faça isso sozinho, para isso começaríamos criando o passo a na forma de um algorítmo que é a forma que os computadores resolvem problemas e depois aplicar isso usando alguma linguagem de programação. nesse exemplo usaremos python mas é possível fazer isso também com a linha de comando do Linux ou Windows. Essa é a forma que os computadores podem ser usados para resolver problemas através
Nesse caso o algoritmo seria:
Acessar o diretório
para todos os arquivos(FOR):
    pegar o len()(tamanho) do nome ignorando o tipo do arquivos
    a partiir do len, definir a quantidade de zeros necessários para completar 8 caracteres
    pegar a diferença do len atual e 8 e colocar a quantidade de zeros antes do nome
    renomear
Esse algoritmo pode ser implementado em qualquer linguagem de programação que consiga acessar os diretórios.
Solução 4
A quarta possível solução que é a que nós usaremos é a solução 3 feita de uma forma mais elaborada. A solução 3 é ótima pra quem ta estudando programação mas em uma situação real de trabalho você não pode ficar sempre reinventando a roda.
Eu uma situação real de trabalho não bastá só resolver o problema, você tem prazos para resolver problemas e prazos para resolver outros problemas e provavelmente esses prazos já estão atrasados já que estatisticamente mais de 80% dos projetos de software atrasam.
Métodos ágeis de desenvolvimento de software como SCRUM e XP foram criados para melhorar essa situação e conseguiram mas ainda assim, de acordo com pesquisas e estatísticas, a maior parte dos projetos ainda atrasa.
Casos como esse, provavelmente auguem já resolveu o problema que você está tentando resolver então vamos consultar a documentação da linguagem, sites como stack overflow e grupos de programadores em redes sociais ou outros lugares como foruns de discussão, MIRC e outros.
Provavelmente já existe alguma função, biblioteca ou código pronto que facilite parte da solução do problema.
Fiz algumas perguntas em grupos do whatsapp, não naquele que a tua tia repassa fake news e mensagem de bom dia com passarinho colorido e fogos de artifício nem naquele que os teus colegas mandam piada, corrente, fofoca da empresa, fake news, propaganda politica e imagens que eu não posso descrever no youtube pro meu vídeo não ser censurado.
Mas em grupos de programadores. Se você quiser link de grupo de python, pergunta que eu mando o link.
eu soube da existência do método zfill
str.zfill(width)
um método do python que preenche uma string com zeros até completar um tamanho pré determinado.
Repare que até agora eu não digitei uma linha de código sequer mas estou pensando na forma de resolver o problema de forma que nas próximas vezes que eu tenha problemas semelhantes já tenha uma solução pronta.
O método zfill recebe o tamanho final desejado para a string como parametro seguindo esse exemplo:
#!/usr/bin/python3
str = “this is string example….wow!!!”
print (“str.zfill : “,str.zfill(40))
print (“str.zfill : “,str.zfill(50))

Result

When we run above program, it produces the following result −
str.zfill : 00000000this is string example….wow!!!
str.zfill : 000000000000000000this is string example….wow!!!
Uma outra recomendação que pode completar o código é essa mensagem que uma pessoa respondeu:
usa glob.glob() pra procurar os arquivos.
import os
for arquivo in glob.glob(“path\\*”):
  if len(str(arquivo) < 8: #não tenho ctz se ele ja retorna em string, então se não for assim, é só caçar o atributo do nome
   os.rename(arquivo, str(“0” * len(arquivo) – 8) + str(arquivo))  opa, so muda aquele len(arquivo) – 8 pra 8 – len(arquivo)
glob pelo que eu pesquisei é um termo geral usado para definir técnicas para corresponder ao padrão especificado de acordo com as regras relacionadas ao shell Unix. Os sistemas e shells Linux e Unix também suportam glob e também fornecem a função glob () nas bibliotecas do sistema.
Neste caso a função glob () será usada em python.
repare que python tem funções e bibliotecas pra fazer quase tudo que você precisar para resolver problemas e automatizar processos no seu dia a dia mesmo que você não seja programador.
então vamos usar o zfill() e o glob() como ferramentas dentro do nosso algorítmo para resolver o problema
usaremos funcionalidades do python para renomear arquivos, procurar arquivos, acessar a pasta, medir a string e completar com zeros.