- Извлечь имя файла из пути для любого формата ОС/пути
- Извлечение имени файла из путей к файлам для платформо-независимых решений
- Способ 1: Использование метода rsplit()
- Способ 2: Использование функции basename() из модуля ОС
- Способ 3: использование модуля пути в Python
- Заключение:
- fnmatch — Unix filename pattern matching¶
Извлечь имя файла из пути для любого формата ОС/пути
В Python мы можем легко извлечь имя файла из всего пути к файлу, используя встроенные функции и библиотеки. Вам может быть интересно, почему вам нужно извлекать имена файлов из абсолютного пути к файлу в Python. Ответ заключается в том, что разные компьютерные системы используют разные разделители для разных файловых систем. Во время автоматизации, которая распространена в настоящее время, очень важно без проблем разделять имена файлов.
Извлечение имени файла из путей к файлам для платформо-независимых решений
Нам необходимо извлечь имена из путей к файлам, чтобы получить независимые от платформы решения вышеуказанной проблемы. Есть много способов сделать это, например:
Давайте посмотрим, как мы можем реализовать все вышеперечисленные методы один за другим.
В Python вы можете извлечь имя файла из пути к файлу, используя различные методы, такие как метод rsplit(), функцию basename() из модуля ОС и модуль Path. Эти методы не зависят от платформы и могут использоваться для обработки различных файловых систем и разделителей в различных компьютерных системах во время автоматизации. Каждый метод имеет свой синтаксис, и вы можете выбрать тот, который соответствует вашим требованиям.
Способ 1: Использование метода rsplit()
Метод rsplit() похож на метод split(), но он разделяет слова или символы, начиная справа, а не слева. Он возвращает список слов или символов в строке, разделенных разделителем. Синтаксис функции:
our_string.rsplit(separator,maxsplit)
Разделитель — это разделитель, который может быть любым символом, если он указан. Значение по умолчанию для этого параметра — пробел.
Параметр 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
Предложено: что такое переменная __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.