Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: jheberg en 8 Febrero 2018, 08:17 am



Título: ¿Cómo filtrar los nombres de un directorio con Python?
Publicado por: jheberg en 8 Febrero 2018, 08:17 am
Hola.

Estoy haciendo un script para saber cuantos archivos hay en un directorio que cumplan cierta condición.

Por ejemplo, tengo estos cinco archivos en una carpeta:
lista - copia - 1.txt
lista - copia.txt
lista 1.txt
lista 2.copia - 1.txt
lista.txt

Ok, quiero que el script solo cuente los archivos 'lista.txt' y 'lista 1.txt', donde 1 puede ser cualquier número, al resto de archivos debe ignorarlos.

Este es mi avance:

Código:
def contador():
    count=0
    for archivos in os.listdir('.'):
      if archivos=='lista.txt' or archivos[6:archivos.index('.')].isdigit():
          count=count+1
    return count

Como bien pueden darse cuenta en el segundo parámetro del if también va a contar al archivo 'lista 2.copia - 1.txt' así que no me sirve, y ya no sé que estrategia usar.

Cambiar el nombre a los archivos no es una opción, ni siquiera moverlos a otro lado.

Ah por cierto, uso Python 2.7


Título: Re: ¿Cómo filtrar los nombres de un directorio con Python?
Publicado por: Eleкtro en 10 Febrero 2018, 04:57 am
ya no sé que estrategia usar.

Este es otro caso en el que puedes aplicar los beneficios de RegEx como ya te fue demostrado en otra duda. Puedes usar RegEx para simplificar ambas condiciones en una sola (aunque no sé si habrá otro modo más simple en Pythton), evaluando la siguiente expresión regular:

Código:
^lista(\s\d)?\.txt$

¿Cómo usar RegEx en Python?, la respuesta aquí:
  • Regular Expression HOWTO — Python 2.7.14 documentation (https://docs.python.org/2/howto/regex.html)

Usa la función 'match' del módulo 're' en Python y esa expresión regular devolverá una instancia de 'MatchObject' si el nombre coincide con: "lista.txt" o "lista{espacio en blanco}{número}.txt".

PD: no tengo Python ahora mismo instalado, de lo contrario te mostraría un código ya hecho.

Saludos!


Título: Re: ¿Cómo filtrar los nombres de un directorio con Python?
Publicado por: jheberg en 12 Febrero 2018, 05:53 am
Oh no sabía ese detalle, gracias.