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

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

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

>>> 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 (<pyshell#39>, 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 (<pyshell#40>, 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 (<pyshell#41>, 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 (<pyshell#44>, line 1)

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

Ответ 1

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

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

Здесь \U в "C:\Users..." запускает экранирование Unicode, \U00014321 из восьми символов, например \U00014321. В вашем коде за экранированием следует символ 's', который недопустим.

Вам нужно дублировать все обратные слеши:

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

Или префикс строки с r (чтобы получить необработанную строку):

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

С 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', предшествующий строке, отключает escape-код Unicode с восемью символами (для необработанной строки), который был неудачным. (Это немного упрощает, но работает, если вы не заботитесь о unicode)

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

Ответ 5

Обратитесь к документу 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')

Ответ 6

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

Ответ 7

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

У меня есть script для отправки электронной почты и:

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

когда я удаляю первый char в файле uslugi1.csv, отлично работает.

Ответ 8

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

Ответ 9

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

Ошибка связана с указанным путем

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

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

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

Ответ 10

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