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


 


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderador: Eleкtro)
| | |-+  ¿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 766 veces)
jheberg

Desconectado Desconectado

Mensajes: 77


Ver Perfil
¿Cómo filtrar los nombres de un directorio con Python?
« en: 8 Febrero 2018, 08:17 »

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 por jheberg » En línea

Eleкtro
🌍 🕉️ 🛏️ Novato Astral 🛏️ 🕉️ 🌍 y...
Moderador Global
***
Desconectado Desconectado

Mensajes: 9.454


El sentido común es el menos común de los sentidos


Ver Perfil
Re: ¿Cómo filtrar los nombres de un directorio con Python?
« Respuesta #1 en: 10 Febrero 2018, 04:57 »

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 por Eleкtro » En línea


[/cent
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 »

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 1,617 Último mensaje 26 Julio 2011, 21:56
por confused
[PYTHON] Cómo puedo indicar el directorio y tipo de archivo?
Scripting
Maldito karma 3 1,945 Último mensaje 25 Julio 2012, 22:37
por Eleкtro
[PYTHON] Como descargar un directorio web completo
Scripting
n3w 3 2,739 Último mensaje 15 Diciembre 2012, 18:08
por 0x5d
obtener nombres de peliculas de una pagina con Python ? ayuda :) « 1 2 »
Scripting
novato04 13 3,038 Último mensaje 10 Agosto 2014, 19:32
por engel lex
¿Cómo filtrar el tráfico con portal cautivo?
Redes
santibarquero98 1 539 Último mensaje 26 Abril 2016, 12:39
por HdM
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines