[Python-es] isfile()

Ricardo Azpeitia Pimentel razpeitia en gmail.com
Vie Ago 2 18:49:04 CEST 2013


Si abre el archivo pero nunca lo cierra. Y si, puedes iterar sobre un
archivo, y por default usa xreadlines si no mal recuerdo.

Lo que pasa es que usa getcwd y depediendo de donde ejecute el script  y
donde se encuentren sus archivos va a tener resultados diferentes.

Una buena idea seria imprimir la rutas para ver cual es la diferencia.


El 2 de agosto de 2013 11:41, Carlos Zuniga <carlos.zun en gmail.com> escribió:

> 2013/8/2 Jesús Curbelo Rodríguez <jescurbelo en 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 en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130802/9a6c8e84/attachment.html>


Más información sobre la lista de distribución Python-es