Estoy escribiendo un script que tiene que mover algún archivo, pero desafortunadamente no parece os.path
juega con la internacionalización muy bien. Cuando tengo archivos nombrados en hebreo, hay problemas. Aquí hay una captura de pantalla de los contenidos de un directorio:Python's os.path asfixia en hebreo nombres de archivo
alt text http://eli.thegreenplace.net/files/temp/hebfilenameshot.png
Consideremos ahora el código que va sobre los archivos en este directorio:
files = os.listdir('test_source')
for f in files:
pf = os.path.join('test_source', f)
print pf, os.path.exists(pf)
La salida es:
test_source\ex True
test_source\joe True
test_source\mie.txt True
test_source\__()'''.txt True
test_source\????.txt False
Observe cómo os.path.exists
piensa que el archivo con nombre hebreo ni siquiera existe? ¿Cómo puedo solucionar esto?
ActivePython 2.5.2 en Windows XP Home SP2
print no parece ser exigente con ASCII en todos los entornos. Ver mi respuesta – PEZ
imprimir no tiene ningún problema al imprimir unicode: el problema puede estar en la codificación stdout. Si la consola es unicode, no hay problema, de lo contrario se requiere una codificación explícita. – piro
Eso es excelente. Debería significar que puede informar nombres de archivos sanos en Windows si imprime en un manejador de archivo con el conjunto de codificación correcto. El controlador de errores 'reemplazar' simplemente me señala la derrota. =) – PEZ