Есть функция, которая возвращает именно то, что вы хотите
import os print(os.path.basename(your_path))
ПРЕДУПРЕЖДЕНИЕ: Когда os.path.basename() используется в системе POSIX для получения базового имени из пути в стиле Windows (например, "C:\\my\\file.txt"), будет возвращен полный путь.
Приведенный ниже пример из интерактивной оболочки python, работающей на хосте Linux:
Python 3.8.2 (default, Mar 132020, 10:14:16) [GCC 9.3.0] on Linux Type"help", "copyright", "credits"or"license"for more information. >>> import os >>> filepath = "C:\\my\\path\\to\\file.txt"# A Windows style file path. >>> os.path.basename(filepath) 'C:\\my\\path\\to\\file.txt'
Ответ 2
Использование os.path.split или os.path.basename, как предлагают другие, будет работать не во всех случаях: если вы запускаете скрипт в Linux и пытаетесь обработать путь в классическом стиле Windows, это приведет к сбою.
Пути Windows могут использовать либо обратную, либо прямую косую черту в качестве разделителя пути. Следовательно, ntpath модуль (который эквивалентен os.path (при запуске в Windows) будет работать для всех(1) путей на всех платформах.
import ntpath ntpath.basename("a/b/c")
Конечно, если файл заканчивается косой чертой, базовое имя будет пустым, поэтому создайте свою собственную функцию для обработки этого:
defpath_leaf(path): head, tail = ntpath.split(path) return tail or ntpath.basename(head)
(1) Есть одно предостережение: имена файлов Linux могут содержать обратную косую черту. Таким образом, в Linux, r'a/b\c' всегда ссылается на файл b\c в a папке, в то время как в Windows, это всегда относится к c файлу в b подпапке a папки. Поэтому, когда в path используются как прямые, так и обратные косые черты, вам нужно знать соответствующую платформу, чтобы иметь возможность правильно ее интерпретировать. На практике обычно можно с уверенностью предположить, что это путь Windows, поскольку обратная косая черта редко используется в именах файлов Linux, но помните об этом при написании кода, чтобы не создавать случайных дыр в безопасности.