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/

Responder a