为什么在python中使用os.path.exists()时反斜杠不起作用,但正斜杠确实有效?

时间:2017-10-07 18:15:13

标签: python os.path

我正在学习如何在python中使用OS模块,当我将文件路径从文件资源管理器直接复制到python时,如下所示:

os.path.exists('C:\Users\nheme\Documents\Classes\ME 4720 TSL\Flowmeter 
Lab\example.docx')
Out[43]: False

输出为False,这没有意义,因为文件和路径肯定存在。然后,当我用正斜杠替换反斜杠时,如下所示:

os.path.exists('C://Users//nheme//Documents//Classes//ME 4720 TSL//Flowmeter 
Lab/example.docx')
Out[42]: True

它返回True。有人可以解释为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

因为反斜杠是Python字符串中的转义字符。

当您尝试在Python 2中打印该字符串时会发生什么

>>> s = 'C:\Users\nheme\Documents\Classes\ME 4720 TSL\FlowmeterLab\example.docx'
>>> print s
C:\Users
heme\Documents\Classes\ME 4720 TSL\FlowmeterLab\example.docx
>>>

Python已将\n解释为换行符的转义码。

有很多方法,例如,使用原始字符串

>>> s = r'C:\Users\nheme\Documents\Classes\ME 4720 TSL\FlowmeterLab\example.docx'
>>> print s
C:\Users\nheme\Documents\Classes\ME 4720 TSL\FlowmeterLab\example.docx
>>>

或者您可以将所有\更改为\\

>>> s = 'C:\\Users\\nheme\\Documents\\Classes\\ME 4720 TSL\\FlowmeterLab\\example.docx'
>>> print s
C:\Users\nheme\Documents\Classes\ME 4720 TSL\FlowmeterLab\example.docx

答案 1 :(得分:0)

在路径中使用单个反斜杠不起作用。改用C:\\Users\\nheme\\Documents\\Classes\\ME 4720 TSL\\FlowmeterLab\\example.docx