12.- 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()