Foros Python

Versión completa: Verificar nombres de archivos y seleccionar uno
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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.
Hola, bienvenido.

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

Código:
version = filename.split("V")[-1]

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

Código:
if version == filename:
    # No tiene versión.
else:
    # Remover la extensión (.pdf) y convertir a entero.
    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