De nada, Manuel. Un detalle: observa que el bucle externo lo hago directamente sobre lista_videos, pero el interno lo hago sobre el *rango* de lista_subtitulos. Como no sé cuánto sabes de Python, a lo mejor te preguntaste el por qué de esto, y sí que hay una razón: estoy modificando lista_subtitulos desde dentro del bucle que itera sobre ella. Esto no sería posible si estuviera iterando la lista directamente, porque Python prohibe cambios en las listas en esa situación.
2016-05-10 7:37 GMT-10:00 Manuel <malvare...@gmail.com>: > Muchas gracias, Ricardo. > > Con tus modificaciones y consejos, funciona perfectamente. Lo he ampliado > un poco y ahora > también me mueve los archivos renombrados a una carpeta. > Referente al triple bucle for, sé que era una idea horrible.(jejejeje) > > Nuevamente, gracias por tu ayuda. > > > El 9 may 2016, a las 21:44, Ricardo Cárdenes <ricardo.carde...@gmail.com> > escribió: > > No has comentado cómo para, pero sospecho que algún error saltará por > algún lado. El bucle que tienes montado es un poco caótico: > > 2016-05-09 9:29 GMT-10:00 Manuel <malvare...@gmail.com>: > >> for video in lista_videos: >> >> for subtitulo in lista_subtitulos: >> >> for i in range(0,len(lista_videos)): >> >> >> >> if subtitulo[i][0:4] == video[i][0:4]: >> >> subtitulo_final = video[0:-4] + '.srt' >> >> os.rename(subtitulo, subtitulo_final) >> >> >> >> > Ahí estás iterando una vez por cada vídeo. Por cada una de esas > iteraciones, estás recorriendo toda la lista de subtítulos y luego tienes > un tercer bucle dentro (!!) que recorre los índices de la lista de > vídeos... y los aplica como índice al *NOMBRE* de los subtítulos y los > vídeos. Como digo, un tanto caótico. En su lugar podrías hacer: > > for video in lista_videos: > for i in range(len(lista_subtitulos): > subtitulo = lista_subtitulos[i] > if subtitulo[:4] == video[:4]: > subtitulo_final = video[0:-4] + '.srt' > os.rename(subtitulo, subtitulo_final) > del lista_subtitulos[i] > break > > Observa que pongo un 'break' si se renombra un subtítulo. Esto es porque > asumo que no habrá dos subtítulos que valgan al mismo vídeo, así que > paramos la búsqueda ahí, para ahorrar ciclos en el bucle (si los hubiera, > el segundo subtitulo *machacaría al primero*, ya que dos ficheros no pueden > tener el mismo nombre...) > > También: si hemos sustituido un subtitulo, lo elimino de la lista, para no > tener que usarlo en comprobaciones futuras (que no iban a servir para nada). > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/