elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ¿Cómo filtrar los nombres de un directorio con Python?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo filtrar los nombres de un directorio con Python?  (Leído 3,452 veces)
jheberg

Desconectado Desconectado

Mensajes: 77


Ver Perfil
¿Cómo filtrar los nombres de un directorio con Python?
« 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


« Última modificación: 8 Febrero 2018, 08:20 am por jheberg » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: ¿Cómo filtrar los nombres de un directorio con Python?
« Respuesta #1 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í:

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!


« Última modificación: 10 Febrero 2018, 05:06 am por Eleкtro » En línea


jheberg

Desconectado Desconectado

Mensajes: 77


Ver Perfil
Re: ¿Cómo filtrar los nombres de un directorio con Python?
« Respuesta #2 en: 12 Febrero 2018, 05:53 am »

Oh no sabía ese detalle, gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como filtrar IV's (WEP) unicos.
Wireless en Windows
syscom 1 2,249 Último mensaje 26 Julio 2011, 21:56 pm
por confused
[PYTHON] Cómo puedo indicar el directorio y tipo de archivo?
Scripting
Maldito karma 3 2,738 Último mensaje 25 Julio 2012, 22:37 pm
por Eleкtro
[PYTHON] Como descargar un directorio web completo
Scripting
n3w 3 4,040 Último mensaje 15 Diciembre 2012, 18:08 pm
por 0x5d
obtener nombres de peliculas de una pagina con Python ? ayuda :) « 1 2 »
Scripting
novato04 13 4,983 Último mensaje 10 Agosto 2014, 19:32 pm
por engel lex
[Ayuda] [Python] backdoor y cambio de directorio
Scripting
yomismo2512 3 1,301 Último mensaje 28 Marzo 2020, 07:34 am
por reconFito
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines