66 lines
2.5 KiB
Python
66 lines
2.5 KiB
Python
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)
|
|
|