os.path.relpath在以驱动器为起点时未返回相对路径

3 投票
1 回答
4119 浏览
提问于 2025-04-16 11:32

为什么在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() 有关。

撰写回答