Как проверить расширение файла в программе: решение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Функция os.path.splitext() в Python дает возможность разделить имя файла на основную часть и расширение:

Python
Скопировать код
import os

# Получаем расширение файла 'example.txt' или 'final_draft_v2_FINAL.txt'
print(os.path.splitext('example.txt')[1])  # Результат: .txt

Этот способ простой и эффективный для извлечения только расширения файла.

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

Python
Скопировать код
filename = 'example.TXT'
extension = os.path.splitext(filename)[1].lower()  # Преобразование в нижний регистр
if extension == '.txt':
    print("Обнаружен TXT файл. Источник данных.")
elif extension in ('.jpg', '.jpeg', '.png'):
    print("Обнаружен графический файл!")
Кинга Идем в IT: пошаговый план для смены профессии

Извлечение расширения с помощью pathlib

Модуль pathlib предлагает более современный и понятный способ работы с файлами в Python:

Python
Скопировать код
from pathlib import Path

# Определение расширения файла с использованием pathlib
file_path = Path('example.txt')
if file_path.suffix.lower() == '.txt':
    print(f"Файл {file_path.name} может содержать неожиданные данные.")

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

Поиск по шаблону с помощью fnmatch

Для поиска файлов с рядом однотипных расширений можно использовать модуль fnmatch и его функцию поиска по шаблонам:

Python
Скопировать код
import fnmatch
import os

for file in os.listdir('.'):
    if fnmatch.fnmatch(file, '*.txt'):
        print(f"{file} – Внимание, обнаружен текстовый документ!")

Визуализация

Расширение файла можно рассматривать как его "специфику":

Markdown
Скопировать код
Допустим, у нас есть файл `data.2022.report.xlsx`.
Markdown
Скопировать код
[data][2022][report][📊 xlsx]

Последняя часть указывает на особенности файла:

Markdown
Скопировать код
... [📊 xlsx] – Как вы уже догадались, это таблица Excel!

Распознавание шаблонов с помощью glob

С помощью модуля glob можно легко найти файлы определенного расширения, включая поиск в подкаталогах:

Python
Скопировать код
import glob

# Поиск всех текстовых файлов в текущей директории
text_files = glob.glob('*.txt')
for file in text_files:
    print(f"{file}: Почему велосипед не может стоять самостоятельно? Ему некогда.")

Обработка типов файлов с применением умного подхода

Для оптимизации кода и избавления от громоздких конструкций if-elif при обработке разнообразных типов файлов можно использовать следующий подход:

Python
Скопировать код
file_ext_actions = {
    '.txt': process_text_file,      # Обработчик текстовых документов
    '.jpg': process_image_file,     # Обработчик файлов JPEG
    '.png': process_image_file,     # Обработчик файлов PNG
    '.pdf': process_pdf_file,       # Обработчик PDF-документов
}

file_ext = os.path.splitext('example.txt')[1]  # Определение типа файла
action = file_ext_actions.get(file_ext.lower())  # Выбор соответствующего действия ...
if action:
    action()  # Выполняем соответствующую обработку
else:
    print("Указанный тип файла не поддерживается. Возможно, необходимы дополнительные расширения?")

Так, определенные функции могут обрабатывать файлы в зависимости от их расширения.

Полезные материалы

  1. Документация Python os.path.splitext — Официальное руководство по работе с файловыми путями в Python.
  2. Документация Python pathlib.Path — Руководство по использованию модуля pathlib в Python.
  3. Работа с файлами в Python – Real Python — Развернутое описание методов работы с файлами в Python от Real Python.
  4. Работа с CSV-файлами в Python – GeeksforGeeks — Полезные рекомендации для работы с CSV в Python.
  5. Типы медиа — Справочник медиатипов и файловых расширений.
  6. Python Tutorial: File Objects – Reading and Writing to Files – YouTube — Видеоурок по чтению и записи файлов в Python.
  7. GitHub – ahupp/python-magic: Обертка для libmagic на Python — Библиотека Python для определения типов файлов не только по расширению, но и по содержимому.