Python поиск названия файла

Извлечь имя файла из пути для любого формата ОС/пути

В Python мы можем легко извлечь имя файла из всего пути к файлу, используя встроенные функции и библиотеки. Вам может быть интересно, почему вам нужно извлекать имена файлов из абсолютного пути к файлу в Python. Ответ заключается в том, что разные компьютерные системы используют разные разделители для разных файловых систем. Во время автоматизации, которая распространена в настоящее время, очень важно без проблем разделять имена файлов.

Извлечение имени файла из путей к файлам для платформо-независимых решений

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

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

В Python вы можете извлечь имя файла из пути к файлу, используя различные методы, такие как метод rsplit(), функцию basename() из модуля ОС и модуль Path. Эти методы не зависят от платформы и могут использоваться для обработки различных файловых систем и разделителей в различных компьютерных системах во время автоматизации. Каждый метод имеет свой синтаксис, и вы можете выбрать тот, который соответствует вашим требованиям.

Способ 1: Использование метода rsplit()

Метод rsplit() похож на метод split(), но он разделяет слова или символы, начиная справа, а не слева. Он возвращает список слов или символов в строке, разделенных разделителем. Синтаксис функции:

our_string.rsplit(separator,maxsplit)

Разделитель — это разделитель, который может быть любым символом, если он указан. Значение по умолчанию для этого параметра — пробел.

Читайте также:  Adding border to div in css

Параметр maxsplit определяет количество сплитов, которые необходимо выполнить. Это необязательный аргумент. Его значение по умолчанию равно -1, что разделяет все отдельные элементы. Давайте посмотрим на код того же самого. Вам не нужно устанавливать ничего дополнительно, чтобы использовать эту функцию.

#code for extracting file name #taking input for file path file_name=input("Enter the absolute path of your file=") #spliting the entire file path filename_compo=file_name.split('/') #using rsplit() to separate file name file_name_extracted = filename_compo[-1].rsplit('.', 1) #displaying only the file name print("The file name is wp-block-syntaxhighlighter-code "> 
Enter the absolute path of your file=C:/Downloads/askpython_files.txt The file name is= askpython_files

Использование метода Rsplit

Предложено: что такое переменная __file__ в Python?

Способ 2: Использование функции basename() из модуля ОС

Модуль операционной системы (ОС) в Python содержит различные функции, которые могут устанавливать соединения между операционной системой и пользователем. Мы будем использовать функцию basename() из этого модуля, которая может извлечь базовое имя файла. Нет необходимости устанавливать или загружать какие-либо дополнительные библиотеки, чтобы использовать эту функцию, поскольку она входит в стандартные служебные модули Python. Его синтаксис:

os.path.basename(path_of_the_file)

Код, используемый для извлечения имени файла:

#code for extracting file name #importing required modules import os #taking input for file path file_abpath=input("Enter the absolute path of your file=") #using the basename function from the os module file_nameextracted = os.path.basename(file_abpath) #returns the tuple containing the file file_final = os.path.splitext(file_nameextracted) #only the first index print("The filename is wp-block-syntaxhighlighter-code "> 
Enter the absolute path of your file=C:/users/shreya/downloads/myfolder.txt The filename is= myfolder

Способ 3: использование модуля пути в Python

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

Следующим образом мы можем использовать модуль пути для извлечения имени файла из пути в python.

#code for extracting file name #importing required modules from pathlib import Path file_path = input("enter absolute file path=") # the name attribute returns full name of the file print("The name of the file is wp-block-syntaxhighlighter-code "> 
enter absolute file path=C:/downloads/myfolder/firstprogram.py The name of the file is= firstprogram.py

Проверьте: конвертируйте PDF в файл TXT с помощью Python.

Заключение:

В этом руководстве мы рассмотрели различные методы извлечения имен файлов из абсолютных путей к файлам в Python. Имея несколько доступных библиотек, вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Поскольку вы продолжаете работать с файлами, как вы можете интегрировать эти методы в свои проекты для удобной обработки файлов и автоматизации?

Источник

fnmatch — Unix filename pattern matching¶

This module provides support for Unix shell-style wildcards, which are not the same as regular expressions (which are documented in the re module). The special characters used in shell-style wildcards are:

matches any single character

matches any character in seq

matches any character not in seq

For a literal match, wrap the meta-characters in brackets. For example, '[?]' matches the character '?' .

Note that the filename separator ( '/' on Unix) is not special to this module. See module glob for pathname expansion ( glob uses filter() to match pathname segments). Similarly, filenames starting with a period are not special for this module, and are matched by the * and ? patterns.

Also note that functools.lru_cache() with the maxsize of 32768 is used to cache the compiled regex patterns in the following functions: fnmatch() , fnmatchcase() , filter() .

fnmatch. fnmatch ( filename , pattern ) ¶

Test whether the filename string matches the pattern string, returning True or False . Both parameters are case-normalized using os.path.normcase() . fnmatchcase() can be used to perform a case-sensitive comparison, regardless of whether that’s standard for the operating system.

This example will print all file names in the current directory with the extension .txt :

import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file) 

Test whether filename matches pattern, returning True or False ; the comparison is case-sensitive and does not apply os.path.normcase() .

fnmatch. filter ( names , pattern ) ¶

Construct a list from those elements of the iterable names that match pattern. It is the same as [n for n in names if fnmatch(n, pattern)] , but implemented more efficiently.

fnmatch. translate ( pattern ) ¶

Return the shell-style pattern converted to a regular expression for using with re.match() .

>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '(?s:.*\\.txt)\\Z' >>> reobj = re.compile(regex) >>> reobj.match('foobar.txt')

Unix shell-style path expansion.

Источник

Оцените статью