afegit folder_zip_to_cso.py

This commit is contained in:
2025-04-13 09:17:04 +02:00
parent 29380539e5
commit 945601363a
5 changed files with 99 additions and 335 deletions
+65
View File
@@ -0,0 +1,65 @@
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 <ruta_de_la_carpeta>")
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)