estructura de directorios en python
CategoriasProgramaciónPython

Crear una estructura de directorios de forma automática en Python

Script de Python: ¿Cómo crear una estructura de directorios de forma automática?

Quiero aprovecharme de las ventajas que ofrece Python y compartir un pequeño “tip” o más bien script, que nos servirá para crear estructuras de directorios y archivos de forma automática.

Evidentemente esto es útil cuando necesitamos replicar una estructura compleja de carpetas y archivos para no tener que hacerlo manualmente.

En mi caso, muchas veces desarrollando en PHP, me veo en la necesidad de crear varios proyectos (aunque sean de prueba) con el mismo tipo de estructura de directorios o similar, por eso, antes lo hacía todo a mano, hasta que “me iluminé” y dije, ¿por qué no usar Python?

Su uso es bastante sencillo, se trata de usar diccionarios, el modulo ‘os’ y algunas funciones de Python. Con todo eso, crearemos automáticamente una estructura “de proyecto”,con sus carpetas y archivos en el directorio base que elijamos.

¡Empecemos!

Lo primero es definir la estructura que queremos. A modo de ejemplo y para no hacerlo tan extenso, supongamos que queremos crear la siguiente estructura:

carpeta1/
    subcarpeta/
        archivo.js
        otroArchivo.php
    subcarpeta2/
        otroMas.html
    otraSubCarpeta/

carpeta2/
    subcarpeta/
        config.php
    otraMas/
        otroEjemplo.env
        yOtro.ini

unArchivo.php
otro.txt

Para ello creamos primero un diccionario de la siguiente manera:

structure = {
    "carpeta1": {
        "subcarpeta": {
            "archivo.js": None,
            "otroArchivo.php": None
        },
        "subcarpeta2": {
            "otroMas.html": None
        },
        "otraSubCarpeta" : {} # vacia, sin archivos
    },
    "carpeta2": {
        "subcarpeta": {
            "config.php": None
        },
        "otraMas": {
            "otroEjemplo.env": None,
            "yOtro.ini": None
        }
    },
    "unArchivo.php": None,
    "otro.txt" : None
}

Y luego el código o la función que hará “la magía”:

import os

def create_structure(base_path, structure):
    for name, content in structure.items():
        path = os.path.join(base_path, name)
        if isinstance(content, dict):
            # Es un directorio, crearlo y proceder recursivamente
            os.makedirs(path, exist_ok=True)
            create_structure(path, content)
        else:
            # Es un archivo, crearlo
            with open(path, 'w') as file:
                pass  # Crear el archivo vacío

# Ruta base donde quieres crear la estructura
base_path = r"C:\ruta\al\directorio\ejemplo"

# Crear la estructura
create_structure(base_path, structure)

Explicación del código:

Primero: Definimos la estructura que queremos crear mediante un diccionario, donde las llaves son nombres de carpetas o archivos. Si un valor asociado a una llave es otro diccionario, significa que es una carpeta que contiene más elementos dentro. Si el valor es None, significa que es un archivo.

Segundo: Importamos el módulo os, el cual nos facilita funciones para trabajar con el sistema de archivos, como en nuestro caso, crear carpetas.

Tercero: Creamos la función create_structure con dos parámetros: base_path (ruta donde se va a crear la estructura) y structure (diccionario que define la estructura).

El funcionamiento de la función es simple:

  • Si el elemento es un diccionario (es decir, una carpeta), se crea la carpeta usando os.makedirs() y luego se llama recursivamente a la función para crear el contenido de esa carpeta.

Concretamente, os.makedirs(path, exist_ok=True), crea la carpeta especificada en path. Si la carpeta ya existe, no hace nada (gracias al argumento exist_ok=True).

  • Si el elemento no es un diccionario (es decir, es un archivo), se crea un archivo vacío con el nombre especificado usando open() en modo de escritura (‘w’).

Con open(path, ‘w’), abrimos un archivo en la ruta path en modo de escritura. Si el archivo no existe, lo crea. Luego, el pass dentro del bloque with, asegura que no se escribe nada en el archivo dejándolo vacío.

Por último y para finalizar, ejecutas la función pasándole la ruta base y el diccionario de estructura como parámetros.

Como has observador, este código es útil para crear estructuras de directorios y archivos de manera automatizada. Puedes adaptarlo según tus necesidades para crear cualquier estructura que necesites. Simplemente modifica el diccionario que define la estructura, elije una ruta y listo.

Espero que te sea útil 😉

Sobre el autor

Comparte:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos
Responsable Óscar Martínez +info...
Finalidad Gestionar y moderar los comentarios +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios No se cederán datos a terceros, salvo obligación legal +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.