2011-07-14 20 views
5

Estoy tratando de construir una utilidad auxiliar simple que revise mis proyectos y encuentre y devuelva los abiertos a través de la línea de comandos. Pero mis llamadas a os.listdir devuelven galimatías (ejemplo: '\x82\xa9\x82\xcc\x96I') siempre que la carpeta o el nombre del archivo estén en japonés, y dicho galimatías no se puede pasar a la llamada otra vez para entrar en la carpeta tampoco. es decir, os.listdir('C:\Documents and Settings\\x82\xa9\x82\xcc\x96I') devuelve un error:¿Cómo puedo recorrer directorios nombrados en japonés en Python?

'WindowsError: [Error 3] 指定されたパスが見つかりません。' 

¿Alguien sabe cómo puedo evitar esto? Muchas gracias.

+1

指定 さ れ た パ ス が 見 つ か り ま せ ん significa "No se puede encontrar la ruta especificada" – Mikaveli

+0

¡Gracias! En realidad, leer el japonés no es un problema para mí, ¡pero aprecio la ayuda! – StormShadow

Respuesta

6

Puede que necesite decodificar la cadena en Unicode, luego volver a codificarla en UTF-8 antes de pasarla a os.listdir. Parece que la cadena japonesa está codificada en Shift-JIS:

>>> '\x82\xa9\x82\xcc\x96I'.decode('shift-jis').encode('utf-8') 
'\xe3\x81\x8b\xe3\x81\xae\xe8\x9c\x82' 
>>> print '\x82\xa9\x82\xcc\x96I'.decode('shift-jis') 
かの蜂 

otra parte, hacer uso de la siguiente función de os.listdir para obtener cadenas Unicode fuera de él en el primer lugar:

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.

Así :

os.listdir(ur'C:\Documents and Settings') 
# ---------^ 
+0

Eres increíble. Gracias. – StormShadow

2

Usted debe tratar de pasar en el directorio de nombres como Unicode-literal (u'your/path'). De esta forma, el resultado también es Unicode (que probablemente se requiera para trabajar con caracteres japoneses).

Desde el documentation:.

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.

Cuestiones relacionadas