Python 3 unicode codifica error

Estoy usando glob.glob para obtener una lista de archivos de una entrada de directorio. Al intentar abrir dichos archivos, Python me responde con este error:

UnicodeEncodeError: el codec ‘charmap’ no puede codificar el carácter ‘\ xf8’ en la posición 18: el carácter se asigna a

Al definir primero una variable de cadena, puedo hacer esto:

filePath = r"C:\Users\Jørgen\Tables\\" 

¿Hay alguna manera de obtener la encoding ‘r’ para una variable?

EDITAR:

 import glob di = r"C:\Users\Jørgen\Tables\\" def main(): fileList = getAllFileURLsInDirectory(di) print(fileList) def getAllFileURLsInDirectory(directory): return glob.glob(directory + '*.xls*') 

Hay mucho más código, pero este problema detiene el proceso.

Independientemente de si usa el literal de cadena sin formato o un literal de cadena normal, el intérprete de Python debe conocer la encoding del código fuente. Parece que usa alguna encoding de 8 bits, no el UTF-8. Por lo tanto tienes que añadir la línea como

 # -*- coding: cp1252 -*- 

al principio del archivo (o utilizando otra encoding utilizada para los archivos de origen). No es necesario que sea la primera línea, pero generalmente es la primera o la segunda (la primera debe contener #!python3 para el script usado en Windows).

De todos modos, generalmente es mejor no usar caracteres que no sean ASCII en los nombres de archivos / directorios.

También puede usar barras diagonales normales en la ruta (de la misma manera que en los sistemas basados ​​en Unix). Además, eche un vistazo a os.path.join cuando necesite componer las rutas.

Actualizado

El problema probablemente no es donde lo buscas. Mi conjetura es que el error se manifiesta solo cuando desea mostrar la lista resultante a través de la print . Esto suele deberse a que la consola utiliza de forma predeterminada una encoding no Unicode que no es capaz de mostrar el carácter. Pruebe el comando chcp sin argumentos en su ventana cmd .

Puede modificar el comando de impresión en su función main() para convertir la representación de cadena a la ASCII que siempre se puede mostrar:

 print(ascii(fileList)) 

Por favor vea también:

Convierta los nombres de archivo de Python a Unicode y enliste los nombres de archivos chinos en el directorio con Python

Puedes decirle a Python que maneje explícitamente las cadenas como unicode, pero debes mantener eso desde la primera cadena en adelante.

En este caso, pasar un u’somepath ‘a os.walk.