2017-10-07 109 views
0

我正在学习如何使用OS模块在Python,当我从文件浏览器中复制文件路径直接进入蟒蛇就像如下:为什么在python中使用os.path.exists()时反斜杠不起作用,但正斜杠能起作用?

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。有人可以解释为什么会发生这种情况吗?

+0

这有一定道理:''\ n''是一个换行符,它不在你的路径中。 ''\\ n''是一个反斜杠,后跟一个'n'。 ''/ n''被转换为''\\ n''。 –

+1

这是因为反斜杠是一个转义字符。 – gus27

+2

尝试在路径前放置'r'。 '(r'C:\ Users \ nheme \ Documents)' – Joe

回答

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