2013/8/2 Jesús Curbelo Rodríguez <jescurb...@gmail.com>: > Hola a todos, > > Tengo este pequeño script: > > import os > import os.path > for fileName in open('testfile.txt'): > f = fileName # opcion 1 > #f = cwd + os.path.sep + fileName # opcion 2 > #f = os.path.join(os.getcwd(), fileName) # opcion 3 > if os.path.isfile(f): > print "Encontrado el archivo %s" % fileName > else: > print "No encontrado el archivo %s" % fileName > > donde testfile.txt incluye la lista de ficheros del directorio donde esta el > script. > Ejecuto el script y no encuentra ninguno de los archivos, o lo que es lo > mismo isfile devuelve False para todos los archivos (probado tanto en > Windows como en Linux). Tampoco me funciona usando la opción 2 ni la opción > 3. > El mismo script en TCL o batch funciona perfectamente encontrando todos los > archivos listados en testfile.txt > Si pruebo desde IDLE la funcion isfile devuelve True. Si en el script pongo > el nombre del archivo o la ruta completa (usando en ambos casos raw strings) > el resultado es el correcto (isfile devuelve True). > He estado buscando en la red pero no consigo encontrar la solución. >
open() devuelve un objeto fichero y no creo que puedas hacer un bucle sobre él directamente (o tal vez esto haga bucle sobre cada carácter?), tienes que llamar a su método readlines. Prueba con: with open('testfile.txt', 'r') as my_file: for file_name in my_file.readlines(): if os.path.isfile(file_name) ... Saludos -- A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/