Como criar um diretório em Python e todos os diretórios pais faltantes

Ana Maria Gomes
4 minutos de leitura

Conteúdos do tutorial

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.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial