Как получить спосок файлов из списка полных путей?
Имеется список из путей вида:
['C:/f/f/f/fol/1.txt', 'C:/f/F/1.txt']
Вложенность пути всегда разная.
Как мне лучше всего получить имена файлов?
Сразу пришла идея перевернуть строку, найти вхождение первого слэша, обрезать строку и перевернуть обратно, но это же костыль какой-то.
Можно ли это как-то реализовать посредством регулярных выражений?
Ответы (3 шт):
Воспользуйтесь стандартным модулем pathlib, чтобы не зависеть от варианта написания пути и иметь платформо-независимое решение:
from pathlib import Path
paths = ['C:/f/f/f/fol/1.txt', r"c:\path\to\2.txt", "c:\\let's/have\\some/fun.txt"]
res = [Path(x).name for x in paths]
результат:
['1.txt', '2.txt', 'fun.txt']
Вам нужно воспользоваться .split
_list = ['C:/f/f/f/fol/1.txt', 'C:/f/F/1.txt']
items = [item.split('/')[-1] for item in _list]
результат: [1.txt, 1.txt]
Есть два варианта. Один - разбиваем строку по знаку '/' и берем последнюю часть:
s.split('/')[-1]
Второй вариант, более правильный - использовать модуль os, чтобы программа адекватно работала на любых платформах (могут использоваться разные символы для разделения части пути - / или \):
import os
os.path.split('C:/f/f/f/fol/1.txt')[-1]