标准Python库 中是否有一个函数 ,它将绝对路径作为参数,并在删除后返回其所有“原子”路径组件的元组所有冗余的(例如./
),解析像../
等的位?例如,给定Unix路径/s//pam/../ham/./eggs
,输出应为
('/', 's', 'ham', 'eggs')
并且给定Windows路径C:\s\\pam\..\ham\.\eggs
,输出应为
('C:', '\\', 's', 'ham', 'eggs')
谢谢!
答案 0 :(得分:2)
尽可能接近(AFAIR)标准的lib:
>>> import os
>>> help(os.path.split)
Help on function split in odule ntpath:
split(p)
Split a pathname.
Return tuple (head, tail) where tail is everything after the final slash.
Either part may be empty.
这并不能解决你的用例问题,但可以轻松扩展它。 有关详细信息,请参阅注释。
答案 1 :(得分:0)
没有任何单一的功能可以做你想要的......主要是因为你所提出的问题从路径操纵的角度来看没有任何意义(因为丢弃{{1} }以有意义的方式改变路径。)
您可以采取以下措施:
..
这给了你:
[x for x in path.split(os.path.sep) if x not in ['.', '..']]
和
>>> path='/s//pam/../ham/./eggs'
>>> [x for x in path.split(os.path.sep) if x not in ['.', '..']]
['', 's', '', 'pam', 'ham', 'eggs']
(只要>>> path=r'C:\s\\pam\..\ham\.\eggs'
>>> [x for x in path.split(os.path.sep) if x not in ['.', '..']]
['C:', 's', '', 'pam', 'ham', 'eggs']
为os.path.sep
)。
它显然不是你正在寻找的东西,但也许它指明了正确的方向。