我有一个看起来像这样的文件列表:
输入
/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']
怎么会这样呢?
谢谢!
答案 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]