我正在学习如何在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。有人可以解释为什么会这样吗?
答案 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
。