我尝试使用以下代码行确认文件是否存在:
os.path.isfile()
但我注意到,如果通过Windows操作系统的复制和粘贴使用反斜杠:
os.path.isfile("C:\Users\xxx\Desktop\xxx")
我遇到语法错误:( unicode错误)等等。
使用正斜杠时:
os.path.isfile("C:/Users/xxx/Desktop/xxx")
有效。
请问为什么会这样?甚至答案也很简单:“这是一种惯例。”
答案 0 :(得分:5)
反斜杠是转义符号。这应该有效:
os.path.isfile("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
。
答案 1 :(得分:4)
因为反斜杠是Python中的转义。具体来说,您得到 Unicode错误,因为\U
转义意味着“此处为Unicode字符;接下来的8个字符是32位十六进制代码点。”
如果您使用原始字符串将反斜杠视为自己,它应该有效:
os.path.isfile(r"C:\Users\xxx\Desktop\xxx")
答案 2 :(得分:3)
您遇到了2个字符序列\x
和\U
的问题 - 它们是python转义码。它们告诉python以特殊方式解释它们之后的数据(前者插入字节,后者插入unicode)。你可以使用“原始”字符串来解决它:
os.path.isfile(r"C:\Users\xxx\Desktop\xxx")
或使用正斜杠(因为,IIRC,windows将接受任何一个)。