Как мне разделить имена файлов по путям, используя python? - PullRequest
2 голосов
/ 31 мая 2010

У меня есть список файлов, которые выглядят так:

Введите

/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 Ответ

17 голосов
/ 31 мая 2010

os.path.split делает именно то, что вам нужно, и я цитирую ...:

os.path.split(path)

Разбить путь по пути в пару, (голова, хвост), где хвост последний Компонент пути и заголовок все, что привело к этому. хвостовая часть никогда не будет содержать косую черту; если путь заканчивается косой чертой, хвост будет пустой. Если в пути нет косой черты, голова будет пустой. Если путь пуст, голова и хвост пусты. Скользящий косые черты снимаются с головы, если только это корень (один или несколько слешей только). Почти во всех случаях присоединиться (руководитель, хвост) равняется пути (единственное исключение быть, когда было несколько косых черт отделяя голову от хвоста).

Итак, учитывая список (названный, например, paths) полных путей,

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

должно быть именно тем списком кортежей, который вы желаете. Если есть какая-то реальная причина, которая заставляет вас запрашивать список списков вместо естественного списка списков, это не сложно сделать:

split_paths_as_lists = [list(os.path.split(p)) for p in paths]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...