makedirs para crear directorios jerárquicos profundos de forma recursiva en Python

Negocio

Error al crear un nuevo directorio con os.mkdir() en un directorio inexistente

os.mkdir()Este es el método utilizado para crear un directorio (carpeta) en Python. Si intenta crear un nuevo directorio en un directorio inexistente, se producirá un error.(FileNotFoundError)

import os

os.mkdir('not_exist_dir/new_dir')
# FileNotFoundError

Crear directorios recursivamente con os.madeirs()

Si utiliza os.makedirs() en lugar de os.mkdir(), se creará un directorio intermedio, por lo que puede crear recursivamente un directorio jerárquico profundo.

os.makedirs('not_exist_dir/new_dir')

En el caso de este ejemplo, los creará todos a la vez. No pasa nada si hay varios directorios intermedios nuevos.

  • directorio intermedio: not_exist_dir
  • directorio final: new_dir

Sin embargo, si el directorio final ya existe, se producirá un error.(FileExistsError)

os.makedirs('exist_dir/exist_dir')
# FileExistsError

Si hay un argumento exist_ok

Desde Python 3.2, se ha añadido el argumento exist_ok, y si exist_ok=True, no se producirá ningún error aunque el directorio final ya exista. Si el directorio final no existe, se creará uno nuevo, y si existe, no se hará nada. Esto es conveniente porque no es necesario comprobar la existencia del directorio final por adelantado.

os.makedirs('exist_dir/exist_dir', exist_ok=True)

Si falta el argumento exist_ok

Si tienes una versión antigua de Python y no tienes el argumento exist_ok en os.madeirs, puedes usar os.path.exists para determinar si hay o no un directorio final, y luego crear uno nuevo sólo si no hay un directorio final.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')
Copied title and URL