“Unicode错误”unicodeescape“编解码器无法解码字节…无法在Python 3中打开文本文件
我正在使用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“翻译”几个文件夹,如“用户”文件夹,俄语(尽pipeinput“用户”仍然是正确的道路),所以我试了它Python31文件夹。 但是,没有运气。 有任何想法吗?
问题在于string
"C:\Users\Eric\Desktop\beeline.txt"
在这里, \U
开始八个字符的Unicode转义,例如'\ U00014321`。 在你的代码中,转义后面是字符's',这是无效的。
你要么需要复制所有的反斜杠,要么用r
前缀(产生一个原始的string)。
Windows上的典型错误是因为默认的用户目录是C:\user\<your_user>
,所以当你想把这个path作为一个string参数使用到一个Python函数中时,你会得到一个Unicode错误,因为\u
是一个Unicode逃逸。 任何字符都不是数字后就会产生错误。
要解决它,只需加倍反斜杠: C:\\\user\\\<\your_user>...
参考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')
使用'r'前缀工作得很好,但需要使用正确的语法。 例如:
passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''')
这里不需要\\ [双反斜杠] – 保持可读性,并且运行良好。
我在Python 3.2中有这个相同的错误。
我有脚本发送电子邮件和:
csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8'))
当我删除文件中的第一个字符uslugi1.csv
工作正常。
或者你可以在path中用'/'replace'\'。
我有同样的错误,只是卸载,再次安装numpy包,工作!