"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. В конце первого скрипта у меня был блок комментариев, обозначенный ''' '''
. Я получил эту ошибку из-за этого кода кода комментариев. Я повторил ошибку несколько раз, как только нашел ее, чтобы убедиться, что это была ошибка. Я до сих пор не знаю, почему.