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')