2017-10-07 112 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