Programing

"유니코드 오류 "유니코드 이스케이프" 코덱이 바이트를 디코딩할 수 없음...Python 3에서 텍스트 파일을 열 수 없음

c10106 2022. 4. 8. 20:44
반응형

"유니코드 오류 "유니코드 이스케이프" 코덱이 바이트를 디코딩할 수 없음...Python 3에서 텍스트 파일을 열 수 없음

Windows 7에서 Python 3.1을 사용하고 있다.기본 시스템 언어는 러시아어, 기본 인코딩은 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 폴더에서 시도해 보았다.그래도, 행운은 없어.좋은 생각 있어?

문제는 끈에 있다.

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

여기\U"C:\Users... 다음과 같은 8자 유니코드 이스케이프 시작\U00014321. 당신의 코드에서는 탈출 뒤에 's'자가 붙는데, 이것은 무효다.

모든 백슬래시를 복제해야 하는 경우:

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

또는 문자열에 접두사를 붙이십시오.r(원시 스트링을 생성하려면

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

기본 사용자 디렉토리가 다음과 같기 때문에 Windows에서 일반적인 오류 발생C:\user\<your_user>, 그래서 당신이 이 경로를 Python 함수에 문자열 인수로 전달하고 싶을 때 , 당신은 단지 유니코드 오류를 얻는다.\u유니코드 탈출이다다음 8자 뒤에 있는 경우\u숫자가 아니다. 이것은 오류를 생성한다.

이 문제를 해결하려면 백슬래시를 두 배로 늘리십시오.C:\\user\\<\your_user>...이렇게 하면 Python은 단일 백슬래시를 단일 백슬래시로 취급할 수 있다.

접두사:'r'아주 잘 작동하지만, 정확한 구문에 들어가야 한다.예를 들면 다음과 같다.

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

할 필요 없음\\여기서 - 가독성을 유지하고 잘 작동한다.

파이톤 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'이 실패하던 8자 유니코드 탈출(원시 문자열의 경우)을 끄고 있는 것 같다.(이것은 약간 지나치게 단순화한 것이지만, 유니코드를 신경쓰지 않으면 효과가 있다)

이게 누군가에게 도움이 되길 바래.

아니면 경로에서 '\'를 '/'로 바꿀 수도 있다.

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

그 오류는 언급된 경로 때문이다.

추가하다'r'진로에 앞서

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

이거면 괜찮을 거야.

파이톤 3.2에서도 같은 오류가 있었다.

이메일 전송 스크립트가 있으며,

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

파일에서 첫 번째 문자를 제거할 때uslugi1.csv효과가 좋다

다음과 같이 변경할 수 있는 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')

나도 같은 오류가 있었어. 그냥 제거했다가 다시 설치했는데, 효과가 있었어!

나는 이런 실수를 했다.나는 다른 2번째 파이썬스크립트의 기능을 호출하는 메인 파이선스크립트를 가지고 있다.첫 번째 스크립트가 끝날 때 나는 다음과 같이 지정된 코멘트 블록을 가지고 있었다.''' '''댓글 코드블록 때문에 이런 오류가 났어.나는 이것이 오류인지 확인하기 위해 한번 발견했을 때 실수를 여러 번 반복했다.나는 여전히 왜 그런지 확신이 없다.

참조URL: https://stackoverflow.com/questions/1347791/unicode-error-unicodeescape-codec-cant-decode-bytes-cannot-open-text-file

반응형