al hacer for filename in open(...):
cada filename incluye el caracter de retorno de carro. Comprueba que eso no te da problemas. Si acaso intenta for filename in open(...): filename = filename[:-1] bla bla bla or algo similar para quitar el \n del final de cada linea Suerte, Jose El día 2 de agosto de 2013 21:09, Jesús Curbelo <jescurb...@gmail.com> escribió: > Por cierto que hay un error en el script, la línea: > > #f = cwd + os.path.sep + fileName # opcion 2 > > es en realidad: > > #f = os.getcwd() + os.path.sep + fileName # opcion 2 > > El script es más complejo pero al simplificarlo para ponerlo aquí no corregí > esa línea :-( > > Yo también pensé que el problema se debía a que el script se ejecutaba en > otro directorio y por eso no encontraba los ficheros. Pero tanto desde IDLE > como desde el script me he asegurado de que está en el directorio correcto > usando os.chdir() y os.getcwd(). Además he puesto todos los print necesarios > para que las rutas son las correctas (además de haber usado la opción 1, la > opción 2 y la opción 3). Por ejemplo esta variación tampoco funciona: > > import sys, os, os.path > fileExists = 0 > fileNoExists = 0 > cwd = os.getcwd() > print "Directorio actual: %s" % cwd > for fileName in open(sys.argv[1]): > f = cwd + os.sep + fileName > if os.path.isfile(f): > fileExists += 1 > print "Encontrado el archivo %s" % f, > else: > fileNoExists +=1 > print "No encontrado el archivo %s" % f, > print "Archivos encontrados: %d" % fileExists > print "Archivos NO encontrados: %d" % fileNoExists > > Sin embargo este script en TCL ejecutado desde el mismo directorio y con los > mismos datos de entrada funciona perfectamente: > > set fileExists 0 > set fileNoExists 0 > set testFile [open [lindex $argv 0] r] > while { [gets $testFile fileName] >= 0 } { > if { [file exists $fileName] } { > incr fileExists > puts "Encontrado el archivo $fileName" > } else { > incr fileNoExists > puts "No encontrado el archivo $fileName" > } > } > close $testFile > puts "Archivos encontrados: $fileExists" > puts "Archivos NO encontrados: $fileNoExists" > > > El 2 de agosto de 2013 17:49, Ricardo Azpeitia Pimentel > <razpei...@gmail.com> escribió: >> >> 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....@gmail.com> >> escribió: >> >>> 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/ >> >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > > -- > Jesús Curbelo > Who watches the watchmen? > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/