В рамках моего проекта по управлению файлами мне потребовалось реализовать функцию фильтрации файлов по их расширению. Это необходимо для обработки файлов определённого типа.
Для решения этой задачи я использовал современный модуль Python под названием «pathlib», который позволяет получить расширение файла.
Прежде чем перейти к объяснению того, как это работает, давайте уточним, что такое расширение файла. Расширение файла — это суффикс, который следует за его именем и обычно располагается после точки. Оно указывает на тип файла.
Например, в файле с именем «sales.pdf» расширение «pdf» сообщает нам, что это документ PDF. А зачем файлу нужно такое расширение, как «.jpg», «.pdf» или «.docx»?
Дело в том, что расширение файла помогает как операционной системе, так и пользователям понять, какие данные содержит файл. Оно также помогает определить, какое приложение или программное обеспечение следует использовать для открытия файла.
Например, если вы откроете файл «sales.txt» в операционной системе Windows 11, она откроет его с помощью приложения «Блокнот», так как это текстовый файл.
В этом уроке я объясню и продемонстрирую, как получить расширение файла, используя различные модули и методы Python.
С помощью модуля os
Модуль «os» в Python предоставляет возможности для взаимодействия с операционными системами. В этом модуле есть подмодуль «os.path», который содержит функции для работы с путями в файловой системе.
Среди функций подмодуля «os.path» есть функция Splitext(). Она позволяет извлекать или получать расширение файла.
Синтаксис:
os.path.splitext(path_of_file)
Где:
- Splitext(): функция принимает путь к файлу с расширением, которое вы хотите получить.
- path_of_file: это путь к файлу в виде строки. Это может быть абсолютный или относительный путь. Я предпочитаю относительный путь, но это зависит от того, какой путь вы хотите указать.
Позвольте мне объяснить вам, как работает эта функция.
Предположим, у вас есть путь к файлу: /data/sales.pdf. Функция splitext() разделит этот путь на две части: корневой путь /data/sales и расширение файла pdf.
Запомните, что функция определяет расширение файла по точке. Она разделяет путь на две части: всё до точки — это корневой путь, а всё после точки — это расширение файла.
Давайте рассмотрим пример. Если у вас есть файл с именем cloud.jpg, который является изображением, вы можете использовать функцию splitext(), чтобы получить расширение файла (.jpg). Вот как это можно сделать в коде: splitext(‘/data/sales.pdf’).
import os file_name = 'cloud.jpg' root, extension = os.path.splitext(file_name) print("The file extension is: ', extension)
Посмотрите на результат: вы получаете расширение «.jpg» из файла с именем «cloud.jpg».
Теперь я объясню, как работает приведённый выше код.
Сначала импортируем модуль «os». Затем определяем имя файла как «cloud.jpg» и указываем расширение, которое мы хотим извлечь. Вы можете указать полный путь, например, /data/images/cloud.jpg, но для простоты я указал имя файла напрямую.
Затем код root, Extension = os.path.splitext(file_name) берёт это имя файла и извлекает из него корневой путь, который является именем файла (в данном случае «облако»), и расширение файла «.jpg».
После этого он сохраняет корневой путь в переменной «root», а расширение файла — в переменной «extension».
Наконец, вы можете получить имя файла, используя «print(» Расширение файла: «, Extension)».
- Помните, что функция Splitext() извлекает расширение файла на основе точки(‘.’) в указанном пути к файлу; если путь содержит несколько точек(‘ .’), то он работает и возвращает пустую строку.
Аналогичным образом вы можете получить любое расширение файла, используя функцию splitext() из модуля os.path.
С использованием модуля Pathlib
Модуль pathlib — это альтернатива модулю os, который был представлен в Python 3.4. В модуле pathlib есть класс Path, который позволяет работать с файлами, используя различные функции для манипулирования файлами.
Чтобы получить расширение файла с помощью модуля pathlib, нужно использовать свойство «суффикс». Это свойство можно вызвать для объекта файла Path.
Например, если ваш файл находится по пути «C:/Program Files/Adobe/adobe.exe», то вы можете использовать следующий код, чтобы получить расширение «exe»:
from pathlib import Path file_name = 'C:/Program Files/Adobe/adobe.exe' file_path = Path(file_name) extension = file_path.suffix print('The file extension is: ', extension)
Как вы можете видеть в выводе, расширение файла — «.exe» по пути «C:/Program Files/Adobe/adobe.exe».
Давайте разберемся в частях кода. Сначала укажите путь к файлу как «file_name = «C:/Program Files/Adobe/adobe.exe». Здесь путь хранится в переменной file_name.
Затем этот путь «file_name» передается конструктору Path (file_name) с использованием «file_path = Path(file_name)». Эта строка возвращает объект пути, на который можно ссылаться, используя «file_path».
Чтобы получить расширение файла, у объекта пути вызывается свойство «suffix», используя «extension = file_path.suffix»; извлеченное расширение сохраняется в переменной «extensions».
Наконец, напечатайте расширение файла, используя ‘print (‘Расширение файла: ‘, Extension)’; в качестве вывода вы получите расширение файла «.exe».