111

我想要访问的文件夹名为 python,位于我的桌面上。

当我尝试访问它时出现以下错误

>>> os.chdir('C:\Users\expoperialed\Desktop\Python')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
4

5 回答 5

182

您需要使用原始字符串,将斜杠加倍或使用正斜杠:

r'C:\Users\expoperialed\Desktop\Python'
'C:\\Users\\expoperialed\\Desktop\\Python'
'C:/Users/expoperialed/Desktop/Python'

在常规 Python 字符串中,\U字符组合表示扩展的 Unicode 代码点转义。

对于任何其他已识别的转义序列,例如\a,\t\x.

请注意,从 Python 3.6 开始,无法识别的转义序列可以触发 a DeprecationWarning(您必须删除它们的默认过滤器),并且在 Python 的未来版本中,这种无法识别的转义序列将导致SyntaxError. 目前没有设置具体的版本,但是Python会先SyntaxWarning在版本中使用才会报错。

如果您想在 Python 3.6 及更高版本中发现此类问题,您可以使用警告过滤器(通过命令行开关环境变量函数调用SyntaxError)将警告变成异常:error:^invalid escape sequence .*:DeprecationWarning

Python 3.10.0 (default, Oct 15 2021, 22:25:32) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import warnings
>>> '\expoperialed'
'\\expoperialed'
>>> warnings.filterwarnings('default', '^invalid escape sequence .*', DeprecationWarning)
>>> '\expoperialed'
<stdin>:1: DeprecationWarning: invalid escape sequence '\e'
'\\expoperialed'
>>> warnings.filterwarnings('error', '^invalid escape sequence .*', DeprecationWarning)
>>> '\expoperialed'
  File "<stdin>", line 1
    '\expoperialed'
    ^^^^^^^^^^^^^^^
SyntaxError: invalid escape sequence '\e'
于 2013-08-06T15:39:30.047 回答
6

这通常发生在 Python 3 中。常见的原因之一是在指定文件路径时需要“\\”而不是“\”。如:

filePath = "C:\\User\\Desktop\\myFile"

对于 Python 2,只需使用“\”即可。

于 2017-03-06T15:41:26.907 回答
4
f = open('C:\\Users\\Pooja\\Desktop\\trolldata.csv')

在 Python 3 及以上版本中使用'\\' 用于 python 程序。错误将得到解决。

于 2017-05-31T08:50:37.280 回答
0

这三种语法都工作得很好。

另一种方法是先写

path = r'C:\user\.......' (无论你的路径是什么)

然后将其传递给 os.chdir(path)

于 2016-12-10T05:00:47.110 回答
-2

我有同样的错误。基本上,我怀疑路径不能在“C:\”之后以“U”或“User”开头。通过将要从 python 访问的文件放在“c:\”路径下,我将目录更改为“c:\file_name.png”。

在您的情况下,如果您必须访问“python”文件夹,可能需要重新安装 python,并将安装路径更改为“c:\python”之类的路径。否则,只需避免路径中的“...\User...”,并将您的项目放在 C: 下。

于 2017-07-03T01:36:13.583 回答