Кодек "Unicode Error" unicodeescape не может декодировать байты... не удается открыть текстовые файлы в Python 3



Я использую python 3.1, на машинах windows 7. Русский язык является системным языком по умолчанию, а utf-8-кодировкой по умолчанию.



глядя на ответ на предыдущий вопрос, я пытаюсь использовать модуль "кодеки", чтобы дать мне немного удачи. Вот несколько примеров:



>>> g = codecs.open("C:UsersEricDesktopbeeline.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated UXXXXXXXX escape (<pyshell#39>, line 1)
>>> g = codecs.open("C:UsersEricDesktopSite.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated UXXXXXXXX escape (<pyshell#40>, line 1)
>>> g = codecs.open("C:Python31Notes.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed N character escape (<pyshell#41>, line 1)
>>> g = codecs.open("C:UsersEricDesktopSite.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated UXXXXXXXX escape (<pyshell#44>, line 1)


моя последняя идея заключалась в том, что я думал, что это может быть тот факт, что windows "переводит" несколько папок, таких как папка "пользователи", на русский язык (хотя ввод "пользователи правильный путь), поэтому я попробовал его в папке Python31. И все же не повезло. Есть идеи?

53763   11  

11 ответов:

проблема со строкой

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

здесь \U начинается в восемь символов Unicode бегства, такие как '\U00014321`. В вашем коде за экранированием следует символ "s", который является недопустимым.

вам либо нужно дублировать все обратные косые черты, либо префикс строки с r (для получения необработанной строки).

типичная ошибка в Windows, потому что каталог пользователя по умолчанию C:\user\<your_user>, поэтому, когда вы хотите использовать этот путь в качестве строкового параметра в функцию Python, вы получаете ошибку Unicode, просто потому, что \u - это Unicode escape. Любой символ не числовой после этого выдает ошибку.

чтобы решить эту проблему, просто удвоить обратную косую черту:C:\\user\\<\your_user>...

префикс с 'r' работает очень хорошо, но он должен быть в правильном синтаксисе. Например:

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

нет необходимости в \ \ [двойные обратные косые черты] здесь-поддерживает читаемость и хорошо работает.

см. документ openpyxl, вы можете сделать изменения следующим образом.

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')

С Python 3 у меня была эта проблема:

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

произвел эту ошибку:

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

исправление, которое сработало:

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

похоже, что "\U "создавал ошибку, а "r", предшествующий строке, отключает восьмизначный Unicode escape (для необработанной строки), который не удался. (Это немного чрезмерное упрощение, но оно работает, если вы не заботитесь о unicode)

надеюсь, это поможет кому-то

у меня была такая же ошибка в Python 3.2.

у меня есть скрипт для отправки email и:

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

когда я удаляю первый символ в файле uslugi1.csv работает нормально.

или вы можете заменить ' \ ' на ' / ' в пути.

У меня была такая же ошибка, просто удалил и снова установил пакет numpy, который работал!

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

ошибка из-за пути, который упоминается

добавить 'r' перед путем

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

это будет работать нормально.

У меня была эта ошибка. У меня есть основной скрипт python, который вызывает функции из другого, 2-го, скрипта python. В конце первого скрипта у меня был блок комментариев, обозначенный ''' '''. Я получал эту ошибку из-за этого блока кода комментария. Я повторил ошибку несколько раз, как только я нашел его, чтобы убедиться, что это была ошибка, и это было. Я до сих пор не знаю, почему.

Comments

  1. U.N.Owen
    U.N.Owen 3 года назад
    <p>"\" поменял в пути на "/"</p>