“Unicode Error” unicodeescape “codec no puede decodificar bytes … No se pueden abrir archivos de texto en Python 3

Estoy usando Python 3.1, en una máquina con Windows 7. El ruso es el idioma predeterminado del sistema y utf-8 es la encoding predeterminada.

Mirando la respuesta a una pregunta anterior , he intentado usar el módulo “codecs” para darme un poco de suerte. Aquí hay algunos ejemplos:

>>> g = codecs.open("C:\Users\Eric\Desktop\beeline.txt", "r", encoding="utf-8") SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (, line 1) >>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8") SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (, line 1) >>> g = codecs.open("C:\Python31\Notes.txt", "r", encoding="utf-8") SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed \N character escape (, line 1) >>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8") SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (, line 1) 

Mi última idea fue que pensé que podría haber sido el hecho de que windows “traduce” algunas carpetas, como la carpeta “users”, al ruso (aunque escribir “users” sigue siendo la ruta correcta), así que lo intenté en la carpeta de Python31. Aún así, no hay suerte. ¿Algunas ideas?

El problema es con la cadena.

 "C:\Users\Eric\Desktop\beeline.txt" 

Aquí, \U inicia un escape de Unicode de ocho caracteres, como ‘\ U00014321’. En su código, el escape es seguido por el carácter ‘s’, que no es válido.

O bien es necesario duplicar todas las barras invertidas, o prefijar la cadena con r (para producir una cadena en bruto).

Error típico en Windows porque el directorio de usuario predeterminado es C:\user\ , por lo tanto, cuando desea utilizar esta ruta como un parámetro de cadena en una función de Python, obtiene un error de Unicode, simplemente porque \u es un Unicode escapar. Cualquier carácter no numérico después de esto produce un error.

Para resolverlo, solo doble las barras invertidas: C:\\\user\\\<\your_user>...

El prefijo con ‘r’ funciona muy bien, pero debe estar en la syntax correcta. Por ejemplo:

 passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''') 

No hay necesidad de \\ [doble barra invertida] aquí: mantiene la legibilidad y funciona bien.

Con Python 3 tuve este problema:

  self.path = 'T:\PythonScripts\Projects\Utilities' 

produjo este error:

  self.path = 'T:\PythonScripts\Projects\Utilities' ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 25-26: truncated \UXXXXXXXX escape 

El arreglo que funcionó es:

  self.path = r'T:\PythonScripts\Projects\Utilities' 

Parece que ‘\ U’ estaba produciendo un error y la ‘r’ que precede a la cadena desactiva el escape de ocho caracteres de Unicode (para una cadena en bruto) que estaba fallando. (Esto es un poco de una simplificación excesiva, pero funciona si no te importa Unicode)

Espero que esto ayude a alguien

O puede reemplazar ‘\’ con ‘/’ en la ruta.

Consulte el documento openpyxl, puede hacer cambios como sigue.

 from openpyxl import Workbook from openpyxl.drawing.image import Image wb = Workbook() ws = wb.active ws['A1'] = 'Insert a xxx.PNG' # Reload an image img = Image(**r**'x:\xxx\xxx\xxx.png') # Insert to worksheet and anchor next to cells ws.add_image(img, 'A2') wb.save(**r**'x:\xxx\xxx.xlsx') 

Tuve este mismo error en Python 3.2.

Tengo script para enviar correos electrónicos y:

 csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8')) 

Cuando uslugi1.csv primer char en el archivo uslugi1.csv funciona bien.

Tuve el mismo error, solo desinstalé e instalé de nuevo el paquete numpy, ¡funcionó!

 ruta = pd.read_csv (** 'C: \ Users \ mravi \ Desktop \ filename' **)

El error es debido a la ruta que se menciona

Agrega ‘r’ antes del camino

 ruta = pd.read_csv (** r'C: \ Users \ mravi \ Desktop \ filename '**)

Esto funcionaría bien.

Tuve este error Tengo una secuencia de comandos de python principal que llama a funciones de otra, segunda secuencia de comandos de python. Al final de la primera secuencia de comandos tuve un bloque de comentarios designado con ''' ''' . Estaba recibiendo este error debido a este bloque de código de comentarios. Repetí el error varias veces una vez que lo encontré para asegurar que este fuera el error, y así fue. Todavía no estoy seguro de por qué.