import os import zipfile import shutil import subprocess import sys def procesar_archivos(carpeta): """ Procesa los archivos .zip de una carpeta, convirtiéndolos en .cso. Omite archivos .zip corruptos y solo elimina los que han sido procesados exitosamente. """ # Recorre todos los archivos de la carpeta for archivo in os.listdir(carpeta): if archivo.endswith('.zip'): ruta_zip = os.path.join(carpeta, archivo) # Crear una carpeta temporal para descomprimir carpeta_temporal = os.path.join(carpeta, 'temp') os.makedirs(carpeta_temporal, exist_ok=True) try: # Intentar descomprimir el archivo .zip with zipfile.ZipFile(ruta_zip, 'r') as zip_ref: zip_ref.extractall(carpeta_temporal) except zipfile.BadZipFile: print(f'Archivo corrupto, no se puede procesar: {ruta_zip}') continue # Saltar al siguiente archivo # Procesar cada archivo descomprimido en la carpeta temporal for archivo_salida in os.listdir(carpeta_temporal): ruta_archivo_salida = os.path.join(carpeta_temporal, archivo_salida) ruta_cso = os.path.join(carpeta, os.path.splitext(archivo_salida)[0] + '.cso') # Comprimir con "ciso 9" comando = ['ciso', '9', ruta_archivo_salida, ruta_cso] resultado = subprocess.run(comando) # Si la compresión fue exitosa, eliminar el fichero zip original if resultado.returncode == 0: os.remove(ruta_zip) print(f'Archivo comprimido y .zip original eliminado: {ruta_zip}') else: print(f'Error al comprimir: {ruta_archivo_salida}') # Eliminar la carpeta temporal shutil.rmtree(carpeta_temporal) print(f'Procesado: {ruta_zip}') if __name__ == "__main__": # Verificar que se pase la ruta como parámetro if len(sys.argv) < 2: print("Uso: python script.py ") sys.exit(1) # Obtener la ruta desde los argumentos del programa carpeta = sys.argv[1] # Comprobar si la carpeta existe if not os.path.isdir(carpeta): print(f'Error: La carpeta especificada no existe: {carpeta}') sys.exit(1) # Llamar a la función para procesar archivos procesar_archivos(carpeta)