Кодек "Unicode Error" unicodeescape "не может декодировать байты ... Не удается открыть текстовые файлы в Python 3 - PullRequest
187 голосов
/ 28 августа 2009

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

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

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

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

Ответы [ 10 ]

395 голосов
/ 28 августа 2009

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

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

Здесь \U запускает экранирование из восьми символов Юникода, например '\ U00014321`. В вашем коде за escape следует символ 's', который недопустим.

Вам необходимо продублировать все обратные косые черты или добавить строку к r (чтобы получить необработанную строку).

20 голосов
/ 12 марта 2015

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

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

17 голосов
/ 17 августа 2017

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

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

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

4 голосов
/ 21 декабря 2017

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

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

2 голосов
/ 03 ноября 2015

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

2 голосов
/ 08 февраля 2015

Обратитесь к документу 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')
1 голос
/ 08 октября 2013

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

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

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

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

0 голосов
/ 22 сентября 2018

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

0 голосов
/ 25 мая 2018
path = pd.read_csv(**'C:\Users\mravi\Desktop\filename'**)

Ошибка из-за указанного пути

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

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

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

0 голосов
/ 04 мая 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...