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