Cómo encontrar archivos con Python

Archivada en Desarrollo Web

Cómo encontrar archivos con Python

Este es el problema: Tengo muchos archivos de karaoke que vienen en pares de archivos mp3 y cdg, el primero tiene la música y el segundo tiene las letras de las canciones. Pero son varios cientos de canciones distribuidas en muchos directorios.

Lo que yo quería era crear una lista de los archivos cdg para poder usarla con el programa de karaokes, por lo que use fnmatch que hace esto mucho más fácil, en solo una línea.

Primero vamos a importar dos módulos necesarios para hacer esta búsqueda, el primero es os que contiene el generador walk para recorrer los directorios y el segundo es fnmatch para encontrar coincidencias.

import os
import fnmatch

Y vamos a crear una lista donde almacenaremos todas las coincidencias.

coincide=[]

A continuación vamos a recorrer el directorio en cuestión con la función os.walk para tener los nombres de los archivos. Cuando un archivo coincida con nuestra búsqueda, colocamos la ruta completa en la lista coincide. Usamos la función fnmatch.filter que toma dos argumentos, el primero es el archivo y el segundo es la coincidencia que buscamos.

for root, dirnames, filenames in os.walk('\Karaoke'):
  for filename in fnmatch.filter(filenames, '*.cdg'):
      coincide.append(os.path.join(root, filename))

Cuando el filtro encuentra una coincidencia se ejecuta la última instrucción que es agregar a la lista el archivo con la ruta completa.

Esto imprime los resultados en la pantalla, pero unas líneas más permite guardar la lista en un archivo:

i = 1
f = open ('granlista.txt', 'w')
for m in matches:
    f.write('F%s=..\..\..%s\n' % (i, m))
    i+=1

Y con eso tenemos una lista de archivos con la terminación deseada.

Javier Sanchez Toledano

Auditor Líder ISO 9000 ● Desarrollo Web Full Stack ● Django/Python ● JavaScript · NodeJS · Angular · VueJS · EmberJS ● Swift 4 ● WordPress · Genesis Framework ● Lector ● Fotografo aficionado ● Generación X ● Soy de Tlaxcala

Tlaxcala, México

Comentarios