Python 尝试对Windows文件路径使用反斜杠时出现语法错误

Python 尝试对Windows文件路径使用反斜杠时出现语法错误,python,python-3.x,syntax,Python,Python 3.x,Syntax,我尝试使用以下代码行确认文件是否存在: os.path.isfile() 但我注意到,如果从Windows操作系统复制和粘贴时使用反斜杠: os.path.isfile("C:\Users\xxx\Desktop\xxx") 我有一个语法错误:(unicode错误)等等 使用正斜杠时: os.path.isfile("C:/Users/xxx/Desktop/xxx") 成功了 我能问一下为什么会这样吗?甚至答案也很简单:“这是一个约定。”您会发现2个字符序列\x和\U——这是python

我尝试使用以下代码行确认文件是否存在:

os.path.isfile()
但我注意到,如果从Windows操作系统复制和粘贴时使用反斜杠:

os.path.isfile("C:\Users\xxx\Desktop\xxx")
我有一个语法错误:(unicode错误)等等

使用正斜杠时:

os.path.isfile("C:/Users/xxx/Desktop/xxx")
成功了


我能问一下为什么会这样吗?甚至答案也很简单:“这是一个约定。”

您会发现2个字符序列
\x
\U
——这是python转义代码。它们告诉python以一种特殊的方式解释它们后面的数据(前者插入字节,后者插入unicode)。您可以使用“原始”字符串绕过它:


或者使用正斜杠(如IIRC,windows将接受其中一个)。

反斜杠是转义符号。这应该起作用:

os.path.isfile("C:\\Users\\xxx\\Desktop\\xxx")
os.path.isfile(r"C:\Users\xxx\Desktop\xxx")
这是因为转义了转义符号,Python将其作为以下文字传递:

"C:\Users\xxx\Desktop\xxx"
但是这样收集路径段(可能是有条件的,基于平台)并使用
os.path.join

path_segments = ['/', 'Users', 'xxx', 'Desktop', 'xxx']
os.path.isfile(os.path.join(*path_segments))

对于您的案例,应该返回
True

,因为反斜杠在Python中是转义符。具体来说,您会得到一个Unicode错误,因为
\U
转义意味着“这里是Unicode字符;接下来的8个字符是32位十六进制码点。”

如果使用原始字符串(将反斜杠视为其本身),则它应该可以工作:

os.path.isfile("C:\\Users\\xxx\\Desktop\\xxx")
os.path.isfile(r"C:\Users\xxx\Desktop\xxx")

我认为这不应该被关闭,因为它不是关于一个错误,而是关于Python为什么以这种方式处理字符串。再加上我的一个。非常感谢,我想知道为什么人们用“r”作为论点的一部分。现在我要说的是“生丝”,非常感谢。从每个人的回复中我学到了一些新东西。+1为我介绍了细分策略。我不使用Python,但我认为这种策略可以应用于大多数语言。