Когда я создавал приложение для управления файлами на языке программирования Python, мне нужно было реализовать функцию отображения файла по его имени. Для этого я использовал модуль Python ‘os’, чтобы получить имя файла.

Кроме того, я продемонстрировал различные модули и методы, которые позволяют получить имя файла по указанному пути.

В Python есть четыре основных метода для работы с путями к файлам: модуль «os», модуль «pathlib», функции Split() и rsplit(), а также регулярные выражения.

Содержание

С использованием модуля Os

Модуль «os» в языке программирования Python предоставляет возможности для взаимодействия с операционными системами. Он включает набор функций, которые позволяют работать с файловыми системами в вашей операционной системе.

В модуле OS вы можете использовать функцию basename(), которая находится в подмодуле os.path. Чтобы получить имя файла, просто передайте путь к этому файлу в качестве аргумента функции.

Для начала определите путь к файлу, например, так:

file_path = "/home/user/documents/data.txt"

Имя файла — data.txt. Чтобы получить только имя файла без пути к нему, можно использовать функцию basename(). Вот как это можно сделать с помощью кода:

file_name = os.path.basename(file_path)

Теперь введите имя файла, используя следующий код: «file_name».

print(file_name)

Имя файла Python с использованием модуля Os

Вот что делает функция basename(): она извлекает имя файла из полного пути к нему. Например, из пути «/home/user/documents/data.txt» она достанет имя «data.txt».

Точно так же, если вы работаете с другим путём к файлу, вы можете использовать функцию basename() из подмодуля os.path, чтобы получить имя файла.

С помощью модуля Pathlib

Модуль pathlib — это новое решение для работы с путями к файлам в Python, представленное в версии 3.4. Он использует объектно-ориентированный подход, что делает работу с путями более удобной и гибкой.

Для получения имени файла с помощью pathlib вы можете использовать класс Path из этого модуля. Этот класс представляет путь файловой системы и предлагает различные методы для работы с путями, такие как чтение или запись содержимого файла.

Вот пример использования класса Path:

from pathlib import Path

Затем определите путь к файлу, как показано в коде ниже.

file_path = "/home/user/documents/editor.exe"

Затем передайте file_path в функцию Path(), как показано в коде ниже.

path = Path(file_path)

После этого, чтобы получить имя файла, вызовите атрибут «имя» в «пути», как показано в коде ниже.

print(path.name)

Путь Python: получение имени файла с помощью модуля Pathlib

Обратите внимание на вывод: при вызове атрибута «имя» в «пути» возвращается имя файла из пути «/home/user/documents/editor.exe».

С помощью регулярного выражения

Регулярное выражение представляет собой последовательность символов, которая служит шаблоном для поиска определённой строки или её части.

Например, с помощью регулярного выражения можно извлечь имя файла из пути к нему. Ниже приведён пример шаблона для этого:

[\w]+?(?=\.)

Где:

  • [\w]: соответствует словам в наборе.
  • +? : Она соответствует строке, если раньше она присутствовала только один раз? ключевое слово
  • (?=): он соответствует всем символам без новой строки и гарантирует остановку.

Например, у вас есть путь и шаблон, которые определены ниже:

path = "/home/user/documents/data.zip"
pattern = '[\w-]+?(?=\.)'

Чтобы получить имя файла, нужно найти шаблон по указанному пути: «/home/user/documents/data.zip». Путь представляет собой строку, поэтому для поиска по этому шаблону нужно использовать функцию search() из модуля re в Python.

Для использования функции поиска нужно передать шаблон, который вы ищете, и путь (строковое значение). Вот пример кода:

import re
file_name = re.search(pattern, path)

Чтобы сравнить шаблон со строковым путём, необходимо вызвать метод group() для file_name. Вот как это можно сделать в коде:

print(file_name.group())

Python получает имя файла с помощью регулярного выражения

Посмотрите на результат. Регулярное выражение (шаблон) возвращает только имя файла, без расширения.

Давайте рассмотрим часть кода.

  • Шаблон «[w-] +?(? =.)» представляет собой имя файла. Затем используется метод search() модуля «re», который сопоставляет этот шаблон с путём к файлу в виде строки.
  • Метод search() принимает два аргумента: шаблон, который нужно найти в строке, и строку, в которой производится поиск. В нашем случае строка — это путь к файлу в вашей системе.
  • После этого для объекта «имя_файла», созданного с помощью метода search(), вызывается метод group(), чтобы сопоставить шаблон.
  • В итоге мы получаем имя файла без расширения.

Это не самый удобный способ извлечения имени файла из пути, но вы можете воспользоваться им, если у вас нет других вариантов.

С использованием методов Split() и Resplit()

Split() и rsplit() — функции в Python, которые позволяют разделить строку на подстроки по заданному разделителю.

Существует тонкая разница между Split() и Rsplit():

  • Функция split() разбивает строку на список подстрок, используя указанный разделитель. Если разделитель не указан, то строка будет разделена на части по пробелам.
  • Функция rsplit(separator, maxsplit) работает так же, как и обычная функция rsplit, но она разделяет строку, начиная с её правого конца.

Как вы можете заметить, оба метода принимают общий аргумент maxsplit. Он указывает, сколько раз нужно выполнить разделение. Если вы укажите его как 1, разделение произойдёт только один раз для указанного разделителя. Если не указать это значение, разделение будет выполнено по умолчанию для всех вхождений разделителя в строке.

Для извлечения имени файла из пути вам потребуется применить простую логику. Сначала разделите путь на список подстрок, используя метод Split(), который основан на разделителе ‘/’.

Затем используйте функцию rsplit() для получения последних подстрок из списка. После этого разделите эту строку на основе точки-разделителя (.) на список подстрок.

И наконец, возьмите первую строку из списка, созданного функцией rsplit(). Эта первая строка будет представлять имя файла.

Например, определите путь к файлу как показано в коде ниже.

path = "/home/user/documents/sales.tar"

Затем используйте функцию Split() с разделителем «\», чтобы разделить путь на список подстрок. Вот код:

path_substring = path.split('/')
print(path_substring)

Далее возьмите последнюю подстроку, применив «path_substring[-1]». Затем используйте метод rsplit() с разделителем в виде точки (.) и разделите строку один раз, указав maxsplit как 1. Вот как это выглядит в коде:

file_name = path_substring[-1].rsplit('.', 1)
print(file_name)

После выполнения кода, который мы рассмотрели, в переменной «имя_файла» будет храниться имя и расширение файла в виде списка подстрок. Чтобы получить доступ к имени файла, нужно использовать код, который находится ниже. Имя файла будет находиться на нулевой позиции в этом списке.

print(file_name[0])

Печать имени файла Python с использованием методов Split() и Resplit()

Обратите внимание на результат. Функции Split() и Rsplit() в сочетании позволяют получить имя файла «продажи» из пути.

Добавить комментарий