Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] problema con ñ al listar un directorio

Estas en el tema de problema con ñ al listar un directorio en el foro de Python en Foros del Web. chicos tengo un problema cuando quiero listar los archivos de un directorio y estos contienen ñ o tildes el codigo que utilizo es: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 03/06/2013, 16:05
 
Fecha de Ingreso: abril-2011
Mensajes: 24
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta problema con ñ al listar un directorio

chicos tengo un problema cuando quiero listar los archivos de un directorio y estos contienen ñ o tildes el codigo que utilizo es:

Código Python:
Ver original
  1. #-*- coding: utf-8 -*-
  2. def listararchivos(self, path):
  3.         ficheros = os.listdir(path)
  4.         rst = []
  5.         for f in ficheros:
  6.             pathname = os.path.join(path, f)
  7.             print(f)

cuando ejecuta el print en la consola muestra lo siguiente

Código:
XML golÚadores Premier.xml
XMLFichaEspa±a.xml
debido a esto no puedo mostrar nada en la plantilla por la ñ y la tilde
he intentado hacer lo siguiente

Código Python:
Ver original
  1. f = f.decode('utf-8')
  2. print(f)

pero me salta el siguiente error:

Código:
'utf8' codec can't decode byte 0xe9 in position 7
tambien he intentado hacer
Código:
f = f.encode('utf-8') y tambien f = u''.join(f)
bueno chicos ese es mi problema y no logro encontrar la solucion espero puedan ayudarme agradecido de antemando

Saludos

Última edición por razpeitia; 03/06/2013 a las 17:15
  #2 (permalink)  
Antiguo 03/06/2013, 17:24
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: problema con ñ al listar un directorio

Tu código esta perfecto.

Esto es lo que estas pasando lo estas ejecutando en el cmd.exe de windows. Si ejecutas "chcp" en la consola te va a mostrar el encoding en el que estas trabajando.

Esa consola no esta haciendo uso de utf-8, por eso es que vez los nombres de los archivos así.

Si lo ejecutas en el IDE que instala python por default. Lo imprimirá correctamente.

Si me equivoque y no lo estas ejecutando en la consola cmd de windows entonces dame mas datos para poder ayudarte.
  #3 (permalink)  
Antiguo 04/06/2013, 07:24
 
Fecha de Ingreso: abril-2011
Mensajes: 24
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: problema con ñ al listar un directorio

razpeitia muchas gracias por responder pero sigo con el problemita mira lo que hice fue hacerlo correr mi proyecto django con apache server y sigo con el mismo problema en la plantilla me muestra el siguiente error:

'ascii' codec can't decode byte 0xe9 in position 7:

y si le quito eso del encode y el utf-8 y en la plantilla le digo qe muestre todo el diccionario que envio desde django me muestra asi:

[{'nombre': 'XML gol\xe9adores PremierLeague', 'estado': 'new', 'modificacion': '2013-03-25 15:02:53'}, {'nombre': 'XMLFichaEspa\xf1a', 'estado': 'new', 'modificacion': '2013-03-21 16:59:25'}]

Pues esto ya me esta sacando canas jeje
bueno pero gracias por el consejo no sabia eso de cmd.exe
seguire buscando

Saludos
  #4 (permalink)  
Antiguo 04/06/2013, 11:25
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: problema con ñ al listar un directorio

Según la documentación http://docs.python.org/2/library/os.html#os.listdir

Changed in version 2.3: On Windows NT/2k/XP and Unix, if path is a Unicode object, the result will be a list of Unicode objects. Undecodable filenames will still be returned as string objects.

En pocas palabras asegúrate que tu variable path sea de tipo unicode. Osea cuando uses tu función:

Código Python:
Ver original
  1. listararchivos(u'/ruta/')
  #5 (permalink)  
Antiguo 04/06/2013, 11:49
 
Fecha de Ingreso: abril-2011
Mensajes: 24
Antigüedad: 13 años, 1 mes
Puntos: 0
Sonrisa Respuesta: problema con ñ al listar un directorio

razpeitia eres un genio te estoy eternamente agradecido no se me paso por la mente tu solucion pero ya esta solucionado con eso

Te comento que hasta cambie la configuracion de python que trabaje con utf-8 y ni aun asi daba

gracias nuevamente por tu tiempo

Saludos

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:35.