Biblioteca con scripts sencillos de Python

Script de Python 3 para extraer de varios ficheros "*.tar.gz" en la ruta "c:\aaa" solamente los ficheros cuyo nombre termine en "_bindenergy.tab".

import os
import shutil
import tarfile

def extraer_archivos_tar_gz(ruta_origen):
    """Extrae los archivos _bindenergy.tab de todos los archivos tar.gz en
       la ruta de origen y los copia en la misma ruta."""
    # Obtener la lista de archivos en la ruta de origen
    archivos = os.listdir(ruta_origen)

    # Filtrar los archivos que son archivos tar.gz
    archivos_tar_gz = [archivo for archivo in archivos if archivo.endswith('.tar.gz')]

    # Iterar sobre los archivos tar.gz
    for archivo_tar_gz in archivos_tar_gz:
        ruta_archivo_tar_gz = os.path.join(ruta_origen, archivo_tar_gz)

        # Crear un directorio temporal para extraer los archivos
        directorio_temporal = os.path.join(ruta_origen, 'temp')
        os.makedirs(directorio_temporal, exist_ok=True)

        # Extraer los archivos _bindenergy.tab del archivo tar.gz
        with tarfile.open(ruta_archivo_tar_gz, 'r:gz') as tar:
            for miembro in tar.getmembers():
                if miembro.name.endswith('_bindenergy.tab'):
                    tar.extract(miembro, path=directorio_temporal)

                    # Copiar el archivo extraído a la ruta de origen
                    ruta_archivo_destino = os.path.join(ruta_origen, os.path.basename(miembro.name))
                    shutil.copy(os.path.join(directorio_temporal, miembro.name), ruta_archivo_destino)

                    print(f"Archivo '{miembro.name}' extraído y copiado correctamente.")

        # Eliminar el directorio temporal después de procesar el archivo tar.gz
        shutil.rmtree(directorio_temporal)

def main():
    # Ruta de origen
    ruta_origen = r"D:\aaa"

    # Extraer y copiar archivos _bindenergy.tab de archivos tar.gz
    extraer_archivos_tar_gz(ruta_origen)

if __name__ == "__main__":
    main()



Última modificación: