Python os.path.commonprefix-是否有面向路径的函数?

Python os.path.commonprefix-是否有面向路径的函数?,python,path,Python,Path,我有一段python代码: print os.path.commonprefix([r'C:\root\dir',r'C:\root\dir1']) 实际结果 期望结果 问题1 基于os.path.commonprefix文档: 返回最长路径前缀(逐个字符) 是否有类似的函数: 返回最长路径前缀(按dir执行的dir) 问题2 如果commonprefix是在os.path中实现的,为什么它不是面向路径的,这意味着返回我想要的结果而不是真正的结果 注: 我可以自己轻松实现,但如果已经实现了,为

我有一段python代码:

print os.path.commonprefix([r'C:\root\dir',r'C:\root\dir1'])
实际结果 期望结果 问题1 基于
os.path.commonprefix
文档:
返回最长路径前缀(逐个字符)

是否有类似的函数:
返回最长路径前缀(按dir执行的dir

问题2 如果
commonprefix
是在
os.path
中实现的,为什么它不是面向路径的,这意味着返回我想要的结果而不是真正的结果

注: 我可以自己轻松实现,但如果已经实现了,为什么不使用它呢

是否有面向路径的功能

不,是的
commonprefix()
可以处理任意序列,而不仅仅是字符串


将路径拆分为多个组件,并对其调用
commonprefix()
,例如:

>>> import os
>>> from pathlib import PureWindowsPath
>>> a, b = map(PureWindowsPath, [r'C:\root\dir', r'C:\root\dir1'])
>>> PureWindowsPath(*os.path.commonprefix([a.parts, b.parts]))
PureWindowsPath('C:/root')

没有额外的库:os.path.commonprefix([r'C:\root\dir',r'C:\root\dir']]中dirname的[dirname.split(os.sep))@user3856011:
pathlib
自Python3.4以来一直在stdlib中(您可以在包括Python2在内的旧版本上安装它)<代码>拆分(os.sep)在许多情况下都会失败,例如,当答案中的代码工作时,它在我的(posix)机器上无法工作。好的,你说得对,但在这种情况下它可以工作,并且idanshmu正在使用Python 2(打印语句)@user3856011:正如我已经说过的,在我的机器上,你的解决方案在这种情况下不起作用。很抱歉,我没有仔细阅读你的答案。如果我将os.sep替换为“\\”(我也使用posix),它将
C:\root
>>> import os
>>> from pathlib import PureWindowsPath
>>> a, b = map(PureWindowsPath, [r'C:\root\dir', r'C:\root\dir1'])
>>> PureWindowsPath(*os.path.commonprefix([a.parts, b.parts]))
PureWindowsPath('C:/root')