Python os.path.dirname()和os.path.basemane()给出了奇怪的结果
我最近读到了Python os.path.dirname()和os.path.basemane()给出了奇怪的结果,python,macos,python-3.x,Python,Macos,Python 3.x,我最近读到了dirname和basename。我的书使用下图来解释它们之间的区别: 我目前正在使用OSX,因此我的根文件夹将为/。我在shell中编写了以下代码: path='\\Users\\apple\\Documents\\list.txt' os.path.dirname(path) 我得到的结果是:' 然后,我编写了以下代码来检查basename: os.path.basename(path)而我这次得到的结果是:'\\Users\\apple\\Documents\\list.
dirname
和basename
。我的书使用下图来解释它们之间的区别:
我目前正在使用OSX,因此我的根文件夹将为/。我在shell中编写了以下代码:
path='\\Users\\apple\\Documents\\list.txt'
os.path.dirname(path)
我得到的结果是:'
然后,我编写了以下代码来检查basename:
os.path.basename(path)
而我这次得到的结果是:'\\Users\\apple\\Documents\\list.txt
这里发生了什么事?如何修复它
另外,我没有任何名为list的文本文件。当我试图查找一个不存在的文件的
dirname
和basename
时,这难道不应该导致错误吗 OSX与Linux一样,使用/
作为分隔符。您可以从OS.path.sep
获取操作系统的标准分隔符
>>> import os
>>> os.path.sep
'/'
>>> path='/Users/apple/Documents/list.txt'
>>> os.path.dirname(path)
'/Users/apple/Documents'
>>> os.path.basename(path)
'list.txt'
请注意,在构建“正确”路径时,如果文件存在,它不会进行任何检查。如果您构建了一个创建新文件的路径,那么这就没有多大意义了。您可以使用它。尝试更改路径,如:
path=r'\Users\apple\Documents\list.txt'
或使用/
斜杠而不是\。粘贴您运行的代码行的精确副本,从[1]开始到结束,使用ipythonOSX中的和Out[1]
像windows一样使用反斜杠。你的意思可能是“/Users/apple/Documents/list.txt”
,这是一个惊人的答案!非常感谢,不客气。有关“文件存在”的更多信息,请阅读的答案。