f = cwd + os.sep + fileName # feo f = os.path.join(cwd, file_name) # lindo El día 2 de agosto de 2013 16:18, Jose Caballero <jcaballero....@gmail.com> escribió: > 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/
-- Juan B Cabral _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/