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/

Responder a