如何使用python从路径中分割文件名?

时间:2010-05-31 01:04:14

标签: python regex

我有一个看起来像这样的文件列表:

输入

/foo/bar/baz/d4dc7c496100e8ce0166e84699b4e267fe652faeb070db18c76669d1c6f69f92.mp4
/foo/baz/bar/60d24a24f19a6b6c1c4734e0f288720c9ce429bc41c2620d32e01e934bfcd344.mp4
/bar/baz/foo/cd53fe086717a9f6fecb1d0567f6d76e93c48d7790c55e83e83dd1c43251e40e.mp4

我想在保留两者的同时从路径中拆分文件名。

输出

['/foo/bar/baz/', 'd4dc7c496100e8ce0166e84699b4e267fe652faeb070db18c76669d1c6f69f92.mp4']
['/foo/baz/bar/', '60d24a24f19a6b6c1c4734e0f288720c9ce429bc41c2620d32e01e934bfcd344.mp4']
['/bar/baz/foo', 'd53fe086717a9f6fecb1d0567f6d76e93c48d7790c55e83e83dd1c43251e40e.mp4']

怎么会这样呢?

谢谢!

1 个答案:

答案 0 :(得分:17)

os.path.split完全符合您的要求,我引用......:

os.path.split(path)
  

将路径名路径拆分为一对,   (头,尾)尾巴是最后一个   pathname组件和头是   导致这一切的一切。该   尾部永远不会包含斜线;   如果路径以斜线结尾,则尾部将是   空。如果路径中没有斜线,   头将是空的。如果路径为空,   头部和尾部都是空的。尾随   除非是从头部剥去斜线   它是根(一个或多个斜杠   只要)。在几乎所有情况下,加入(头,   tail)等于路径(唯一的例外   当有多个斜线时   从头尾分离。)

因此,给定完整路径的列表(例如paths),

split_paths = [os.path.split(p) for p in paths]

应该是您想要的元组列表。如果有任何实际原因让你请求列表列表而不是自然的元组列表,那就不难了:

split_paths_as_lists = [list(os.path.split(p)) for p in paths]