es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mover dinámicamente una subcarpeta de Python una carpeta hacia arriba.

Tenemos un compartimento de archivos que se llena con archivos planos. El proceso de extracción de los archivos ha extraído los archivos en una estructura de carpeta de XYZ / AÑO / DÍA / MES / x / y / z / archivos. Esto está mal, ya que debe estar en la siguiente estructura: XYZ / AÑO / MES / DÍA / x / y / z / archivos. Entonces, necesitamos crear un script de migración que mueva de alguna manera todos los archivos desde la estructura antigua a la nueva estructura.

¿Alguien puede darme algunos consejos sobre cómo hacer esto con Python? He podido listar todos los archivos y subdirectorios utilizando el módulo os, pero no estoy seguro de cómo avanzar para reorganizar las subcarpetas para el día y el mes en la estructura objetivo.

¡Gracias de antemano!

Tengo que agregar: También está bien renombrar la carpeta del mes con la carpeta del día y viceversa.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el módulo shutil en Python para mover archivos y directorios. Para mover los archivos de la estructura antigua a la nueva, puede utilizar una combinación de os.walk() y shutil.move() para recorrer el árbol de directorios y mover los archivos correspondientemente.

    Aquí hay un ejemplo de cómo puede hacerlo:

    import os
    import shutil
    
    # Ruta al directorio que contiene la estructura antigua
    old_dir = 'XYZ'
    
    # Ruta al directorio que contiene la estructura nueva
    new_dir = 'XYZ_new'
    
    # Recorra el árbol de directorios
    for root, dirs, files in os.walk(old_dir):
        # Obtener los directorios de año y día/mes
        year = os.path.basename(root)
        day_month = os.path.basename(os.path.dirname(root))
    
        # Cree la nueva estructura de directorios
        new_path = os.path.join(new_dir, year, day_month)
        os.makedirs(new_path, exist_ok=True)
    
        # Mueva los archivos a la nueva estructura de directorios
        for file in files:
            old_file_path = os.path.join(root, file)
            new_file_path = os.path.join(new_path, file)
            shutil.move(old_file_path, new_file_path)
    

Comments are closed.