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/