我在Windows7机器上使用Python 3.1。俄语是默认的系统语言,utf-8是默认编码。
看一看previous question的答案,我尝试使用"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)我的最后一个想法是,我认为这可能是因为Windows会将一些文件夹“翻译”成俄语,比如"users“文件夹(尽管输入"users”仍然是正确的路径),所以我在Python31文件夹中尝试了一下。尽管如此,还是不走运。有什么想法吗?
发布于 2009-08-28 15:46:24
问题出在字符串上
"C:\Users\Eric\Desktop\beeline.txt"这里,"C:\Users中的\U ...开始一个由八个字符组成的Unicode转义,如\U00014321。在您的代码中,转义后跟字符“s”,这是无效的。
您需要复制所有反斜杠:
"C:\\Users\\Eric\\Desktop\\beeline.txt"或者在字符串前面加上r (以生成原始字符串):
r"C:\Users\Eric\Desktop\beeline.txt"发布于 2015-03-13 00:04:48
因为默认的用户目录是C:\user\<your_user>,所以当您想将此路径作为字符串参数传递给Python函数时,会得到Unicode错误,因为\u是Unicode转义。如果\u后面的8个字符不是数字,则会产生错误。
要解决这个问题,只需将反斜杠加倍:C:\\user\\<\your_user>...这将确保Python将单个反斜杠视为单个反斜杠。
发布于 2017-08-17 05:30:24
使用'r'作为前缀非常有效,但它需要使用正确的语法。例如:
passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''')这里不需要\\ --保持可读性并且工作良好。
https://stackoverflow.com/questions/1347791
复制相似问题