A biblioteca pathlib é a forma recomendada no Python para manipular caminhos de diretórios e arquivos. Ela é uma biblioteca padrão e não precisa de instalação.
1. Construindo caminhos com pathlib
A palavra path significa caminho. A biblioteca pathlib é focada justamente na manipulação desses caminhos de forma orientada a objetos.
from pathlib import Path# Exemplo de criação de caminhoprint(Path('primeira_pasta/segunda_pasta'))# Saída: primeira_pasta/segunda_pasta (macOS/Linux) ou primeira_pasta\segunda_pasta (Windows)print(type(Path('primeira_pasta/segunda_pasta')))
Compatibilidade entre Sistemas Operacionais
Em Windows, caminhos utilizam barra invertida (\) como separador. macOS e Linux utilizam a barra simples (/). A utilização de Path() torna seu script compatível com todos os sistemas operacionais, gerenciando essa diferença automaticamente.
Criando manualmente caminhos para arquivos
Podemos criar caminhos combinando pastas e nomes de arquivos:
from pathlib import Pathfor nome in ['arquivo1.txt', 'arquivo2.txt', 'arquivo3.txt']: print(Path('primeira_pasta/segunda_pasta', nome))# Outra forma utilizando o operador de divisão (/)for nome in ['arquivo1.txt', 'arquivo2.txt', 'arquivo3.txt']: print(Path('primeira_pasta/segunda_pasta') / nome)
Regra do operador /
O Python executa o comando da esquerda para a direita. O primeiro ou o segundo valor da operação devem ser um objeto do tipo Path. Se nenhum dos dois primeiros for Path, o código resultará em um erro.
Os sistemas operacionais possuem uma pasta dedicada aos arquivos de cada usuário (documentos, downloads, imagens, etc.). É importante saber localizar esse diretório, pois ele compõe o caminho absoluto de muitos arquivos.
print(Path.home())
Seus scripts geralmente possuem permissão para escrever dentro desse diretório.
3. Caminhos Absolutos e Caminhos Relativos
Existem duas formas de especificar o caminho de um arquivo:
Caminho Absoluto: Inicia pelo diretório raiz (ex: C:\ no Windows). É o caminho completo que mostra todos os passos do filesystem até o arquivo.
Caminho Relativo: Depende do diretório de trabalho (working directory) atual do programa.
Diretório de Trabalho (CWD)
Todo programa roda a partir de um diretório. Podemos verificar e alterar esse diretório:
from pathlib import Pathimport os# Verificar diretório atual (Current Working Directory)print(Path.cwd())# Mudar diretório de trabalhoos.chdir(Path.home())print(Path.cwd())
4. Manipulando Caminhos de Arquivos
Verificando e convertendo caminhos
# Verificar se é absolutoprint(Path.cwd().is_absolute()) # Trueprint(Path('primeira_pasta').is_absolute()) # False# Transformar relativo em absolutoprint(Path.cwd() / Path('primeira_pasta'))
Variável __file__
Para garantir que o script encontre arquivos localizados na mesma pasta onde ele está, utilize a variável especial __file__.
print(Path(__file__).parent.absolute()) # Caminho da pasta onde o script está
Pegando partes de um caminho
Um caminho pode ser dividido em partes:
Anchor: Diretório raiz.
Drive: Letra do disco (apenas Windows).
Parent: Pasta que contém o arquivo.
Name: Nome do arquivo (formado por stem + suffix).
# Usando pathlibprint(list(Path.home().glob('*'))) # Lista tudoprint(list(Path.home().glob('*.txt'))) # Lista apenas arquivos .txt
Validar existência e tipo
caminho = Path('C:/exemplo/arquivo.txt')print(caminho.exists()) # Verifica se existeprint(caminho.is_dir()) # Verifica se é uma pastaprint(caminho.is_file()) # Verifica se é um arquivo