Automação com Python
Uma área onde a automação com Python possui um impacto significativo é no gerenciamento de arquivos. Tentar encontrar um item específico em um pool de arquivos e diretórios é demorado e exaustivo. Mas, como a organização de arquivos envolve diversas tarefas repetitivas, ela é ideal para ser automatizada usando o Python como um poderoso aliado. Portanto, neste post, criaremos um gerenciador de arquivos simples e fácil.
Gerenciador de arquivos: objetivos
Para automatizar o gerenciamento de arquivos em Python, podemos utilizar vários módulos e bibliotecas. Entre os principais estão o módulo os e o shutil. Ambos podem ser usados para operações de manipulação de diretórios. Em seguida, é preciso definir nosso objetivo. Ou seja, que tipos de arquivos desejamos organizar (por exemplo, imagens, documentos, músicas) e os critérios para organizá-los (por exemplo, data, tipo de arquivo, tamanho, palavras-chave).
Para esse post, faremos um código com dois critérios possíveis de organização: data de criação/modificação e tipo de arquivo. O critério selecionado será utilizado para mover os arquivos para novas pastas para organizá-los.
Começamos o código importando os módulos necessários:
import os
import shutil
import datetime
O módulo os será usado para interagir com pastas e arquivos. Já o shutil permite mover arquivos para diretórios específicos. O módulo datetime é necessário para acessar as datas dos arquivos.
Gerenciamento de arquivos em Python
Em seguida, definimos uma única função que recebe dois argumentos: um diretório de origem e o critério de organização. Ela itera pelo diretório especificado, processa cada arquivo e o move para a pasta de destino apropriada com base no critério escolhido. As pastas de destino são nomeadas conforme os critérios usados no gerenciador.
def organiza_arquivos(pasta_origem, criterio):
"""Organiza os arquivos com base nos critérios especificados.
Argumentos:
diretório: o diretório para verificar arquivos.
critérios: os critérios de organização: data ou tipo de arquivo."""
for root, dirs, files in os.walk(pasta_origem):
for file in files:
file_path = os.path.join(root, file)
file_type = os.path.splitext(file)[1]
file_date = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
if criterio == "data":
pasta_destino = os.path.join(pasta_origem, file_date.strftime("%Y-%m-%d"))
elif criterio == "tipo_de_arquivo":
pasta_destino = os.path.join(pasta_origem, file_type[1:])
else:
print("Critérios inválidos. Por favor, especifique 'data' ou 'tipo_de_arquivo'.")
return
if not os.path.exists(pasta_destino):
os.makedirs(pasta_destino)
shutil.move(file_path, os.path.join(pasta_destino, file))
No trecho acima, o método os.walk() é utilizado para fazer uma varredura completa de todos os arquivos e diretórios presentes no diretório de origem. A função os.path.splitext() extrai a extensão do arquivo. A função datetime.datetime.fromtimestamp() converte a hora de modificação do arquivo em um objeto datetime.
Em seguida, nossa função verifica qual critério foi passado como argumento. Dependendo do critério, arquivos específicos serão movidos para suas respectivas pastas de destino. Para realizar essa tarefa, usamos alguns métodos do módulo os. A função os.path.join() combina caminhos de diretório. A função os.makedirs() cria pastas de destino se elas não existirem. Estas pastas organizarão o diretório original com base no critério estipulado. Por fim, a função shutil.move() transfere os arquivos para o novo local.
A última etapa da função definida consiste em alguns condicionais para lidar com possíveis erros.
Gerenciador de arquivos em ação
Para executar a função, usamos dois inputs para solicitar ao usuário que digite a pasta de origem dos arquivos e o critério que será utilizado no gerenciamento de arquivos. Portanto, logo abaixo da função, insira as seguintes linhas:
diretório_origem = input("Digite o diretório para organizar: ")
criterio = input("Insira os critérios da organização (data ou tipo_de_arquivo): ")
A etapa seguinte consiste em testar a função definida. Para testá-la, criamos uma pasta chamada teste com dois arquivos: teste.txt e teste.py.
Pasta criada para testar o gerenciador de arquivos.
Depois, chamamos a função:
organiza_arquivos(diretório_origem, criterio)
Usando tipo_de_arquivo como argumento da função, o resultado obtido mostra que ela criou duas pastas (py e txt) na pasta original e moveu cada tipo de arquivo para a pasta correta.
Organização final obtida com o gerenciador de arquivos.
Mas lembre-se: essa função é apenas um exemplo. Dependendo das especificidades de suas necessidades de organização de arquivos, esse código pode ser expandido para incluir critérios mais sofisticados.
Veja também:
Concatenações com join() para strings em Python
O que é operador ternário em Python?
F-strings em Strings Multilinhas
Decodificação de strings em Python com decode()
Métodos para Manipular Strings em Python
Módulo Getpass para Prompts de Senhas
Aprenda a comparar textos com Python com Difflib
Módulo textwrap para formatação de textos
Manipulação de arquivos com Python
os.environ: gerenciamento de variáveis de ambiente com Python
Métodos Avançados Do Módulo os
Aprenda a criar documentos do Word com Python
Três dicas simples para escrever códigos Python mais robustos
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.