Criar diretórios em Python é uma tarefa comum ao lidar com operações de sistema de arquivos. Seja você um iniciante ou um desenvolvedor experiente, pode se deparar com a necessidade de criar um diretório e todos os seus diretórios pais, caso eles ainda não existam. Isso é semelhante ao comando Bash mkdir -p
, que cria diretórios aninhados. Vamos explorar como realizar isso em Python.
Criando Diretórios no Python 3.5 e Acima
O Python 3.5 introduziu o módulo pathlib
, que oferece uma abordagem orientada a objetos para lidar com caminhos de sistemas de arquivos. Veja como você pode criar um diretório, incluindo todos os diretórios pais necessários:
from pathlib import Path
Path("/meu/diretorio").mkdir(parents=True, exist_ok=True)
O método mkdir
em um objeto Path
tem dois argumentos importantes:
parents=True
indica ao Python para criar quaisquer diretórios pais que estejam faltando.exist_ok=True
evita um erro se o diretório já existir.
Este método é conciso e elimina a necessidade de tratamento manual de erros.
Lidando com Diretórios no Python 3.2 a 3.4
Se você está usando Python 3.2 ou posterior, mas antes do 3.5, ainda pode usar o módulo os
para criar diretórios:
import os
os.makedirs("/caminho/para/diretorio", exist_ok=True)
A função os.makedirs
também possui um parâmetro exist_ok
, que foi introduzido no Python 3.2. Quando definido como True
, permite que a função tenha sucesso mesmo se o diretório já existir.
Trabalhando com Diretórios no Python 2.7
Para aqueles no Python 2.7, você precisará tratar exceções manualmente:
import os
try:
os.makedirs("/caminho/para/diretorio")
except OSError:
if not os.path.isdir("/caminho/para/diretorio"):
raise
Neste trecho de código, tentamos criar o diretório com os.makedirs
. Se um OSError
for gerado, verificamos se o diretório já existe. Se não existir, relançamos a exceção.
Uma Solução Multiplataforma
Para uma solução que funcione em diferentes versões do Python e trate condições de corrida, você pode usar a seguinte função:
import os
import errno
def make_sure_path_exists(caminho):
try:
os.makedirs(caminho)
except OSError as excecao:
if excecao.errno != errno.EEXIST:
raise
Esta função tenta criar o diretório e captura o OSError
. Ela só relança a exceção se ela não estiver relacionada ao fato de o diretório já existir.
Resumo
Neste post, cobrimos como criar um diretório e quaisquer diretórios pais que estejam faltando em Python. Para versões modernas do Python (3.5+), pathlib
é a abordagem mais direta. Para versões mais antigas, os.makedirs
com tratamento adequado de exceções é o caminho a seguir. Lembre-se de tratar exceções com cuidado para evitar condições de corrida e garantir que seu código seja robusto e livre de erros. Com essas técnicas, você pode gerenciar diretórios com confiança em suas aplicações Python.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários