Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Verificar nombres de archivos y seleccionar uno
#1
Estimados, buenas a todos!

Estoy con una duda para automatizar una tarea, paso a comentarles:

Necesito realizar una combinación de archivos PDF a uno solo (esto ya lo estoy realizando con PyPDF2). El inconveniente es el siguiente:
Hay archivos en esta carpeta donde están los PDF que tienen distintas versiones, y yo necesito tomar la última versión y descartar las restantes.
Por ejemplo, un archivo se llama recomendación.pdf, pero si por algún motivo se modifica, los usuarios lo guardan como recomendaciónV1.pdf, si se vuelve a modificar, recomendaciónV2.pdf, etc.
Lo que yo necesitaría hacer es agarrar la última versión, en este caso, "recomendaciónV2.pdf" y descartar tanto la V1, como la anterior.

Ejemplo de carpeta:
recomendación.pdf
recomendaciónV1.pdf
recomendaciónV2.pdf
análisis.pdf
resoluciones.pdf
aperturas.pdf
aperturasV1.pdf
redacciones.pdf
histórico.pdf

Como ven, hay archivos PDF que no tienen otras versiones, yo debería copiar las de la última versión a otra carpeta, para que de ese anterior me quede lo siguiente:

recomendaciónV2.pdf
análisis.pdf
resoluciónes.pdf
aperturasV1.pdf
redacciones.pdf
histórico.pdf

Como se ve, están descartados: recomendación.pdf, recomendaciónV1.pdf, aperturas.pdf

Y luego ahí haría la combinación de todos los pdf a uno solo.

¿Se les ocurre alguna manera de poder tomar la última versión?

Desde ya muchas gracias.
Responder
#2
Hola, bienvenido.

Podés empezar obteniendo la última parte del archivo vía split(), usando como delimitador una "V". Por ejemplo:

  1. version = filename.split("V")[-1]


Como algunos archivos no tienen versión, podrías chequear eso vía:

  1. if version == filename:
  2. # No tiene versión.
  3. else:
  4. # Remover la extensión (.pdf) y convertir a entero.
  5. version = int(version[:-4])


Poniendo eso dentro de un bucle en el que recorras cada uno de los archivos, podés ir agregando las versiones a una lista y luego buscar la última vía la función incorporada max().

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)