os.path.relpath在以驱动器为起点时未返回相对路径
为什么在Windows上,使用os.path.relpath时,如果以驱动器作为起点(无论是明确指定还是当前目录),它返回的相对路径不正确呢?
>>> os.getcwd()
'U:\\projects'
>>> os.path.relpath(r'D:\foo\something', r"D:\\")
'..\\foo\\something'
>>> os.chdir("D:\\")
>>> os.getcwd()
'd:\\'
>>> os.path.relpath(r'D:\foo\something')
'..\\foo\\something'
>>> os.path.relpath(r'D:\foo\something', r"D:\\foo")
'something'
我本来期待看到的是
'foo\\something'
或者
'.\\foo\\something'
这和Windows上os.path.join的说明有关系吗?
注意,在Windows上,每个驱动器都有自己的当前目录,所以
os.path.join("c:", "foo")表示的是相对于该驱动器当前目录的路径。
我正在使用Python 2.7
相关问题:
1 个回答
3
在 Python 2.7.1 版本中,这个问题已经解决了,具体可以查看这个链接。
问题 #5117:修复了根目录相关的问题,这个问题和 posixpath.relpath() 以及 ntpath.relpath() 有关。