“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包,工作!