Как получить расширение файла

Обновлено: 03.07.2024

В этом руководстве рассказывается, как получить расширение файла из имени файла в Python.

Используйте модуль os.path для извлечения расширения из файла в Python

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

Мы будем использовать этот модуль для получения расширения файла в Python.

os.path имеет функцию splitext() для разделения корня и расширения заданного пути к файлу. Функция возвращает кортеж, содержащий корневую строку и строку расширения.

Давайте укажем пример пути к файлу с расширением docx.

Ожидаемый вывод должен иметь расширение .docx .

Объявите две отдельные переменные, чтобы получить результат splitext() с именами extension и root .

Теперь расширение успешно возвращено из корневого пути к файлу.

Использование модуля pathlib для извлечения расширения из файла в Python

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

pathlib.Path() принимает строку пути в качестве аргумента и возвращает новый объект Path.

Объект pathlib.Path имеет суффикс атрибута, который возвращает информацию о расширении файла.

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

Что, если у нас есть расширение файла, такое как .tar.gz или .tar.bz2?

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

Поэтому, даже если есть только один суффикс, на выходе будет одноэлементный список.

Теперь попробуйте пример с расширением .tar.gz. Чтобы преобразовать список в одну строку, можно использовать функцию join() для пустой строки и принимать атрибут suffixes в качестве аргумента.

Теперь вместо списка отображается фактическое расширение.

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

Модуль os имеет функцию splitext для отделения корня и имени файла от расширения файла. pathlib создает объект Path и просто сохраняет расширение в суффиксах атрибутов.

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

Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».

Статья по теме — файл Python


сообщить об этом объявлении

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

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

Просмотр расширения отдельного файла

    файл.
  1. Выберите параметр «Свойства».
  2. В окне Свойства, похожем на то, что показано ниже, см. запись Тип файла, которая представляет собой тип и расширение файла. В приведенном ниже примере файл представляет собой файл TXT с расширением .txt. В этом случае файл открывается с помощью программы TextPad.

Просмотр расширения файла в Windows

Всегда показывать расширения всех файлов

Пользователи, хорошо знакомые с компьютерными файлами и расширениями файлов, могут захотеть постоянно просматривать расширения файлов, чтобы облегчить поиск и просмотр файлов. Для этого выполните следующие действия для вашей версии Windows.

Windows 10

    .
  1. В панели управления введите файл в текстовое поле Панель управления поиском. Нажмите «Параметры проводника» в результатах поиска.
  2. В окне Параметры проводника щелкните вкладку "Вид".
  3. Снимите флажок с параметра Скрывать расширения для известных типов файлов.

Windows 2000, XP, Vista, 7 и 8

    .
  1. Нажмите "Параметры папки".
  2. Нажмите "Просмотр".
  3. Снимите флажок с параметра Скрывать расширения для известных типов файлов.
  1. Откройте Мой компьютер.
  2. Нажмите "Инструменты" и выберите "Параметры папки" или нажмите "Вид", а затем "Параметры" в зависимости от вашей версии Windows.
  3. В окне Параметры папки перейдите на вкладку "Вид".
  4. Снимите флажок с параметра Скрыть расширения файлов для известных типов файлов.

Командная строка MS-DOS и Windows

В MS-DOS при вводе dir для отображения списка всех файлов также отображается расширение каждого файла.

В наших реализациях будут возвращены символы после финального ‘.’.

Поэтому, в качестве быстрого примера, если имя нашего файла jarvis.txt, тогда он вернет Stringtxt” в качестве расширение файла.

2. Получение расширения файла

Для каждого подхода мы узнаем, как его реализовать, и посмотрим, что происходит в двух особых случаях:

  • когда имя файла не имеет расширения, например, makefile файл
  • и если имя файла состоит только из расширения, например .gitignore или .DS_Store.

2.1. Простой подход к обработке строки

При таком подходе мы будем использовать простой подход к обработке String для поиска расширения:

Этот метод проверит наличие точки ‘.’ появление в данном имени файла.

Если он существует, то он найдет последнюю позицию точки ‘.’ и вернуть символы после этого, символы после последней точки «.» известное как расширение файла.

Особые случаи:

  1. Без расширения — этот метод вернет пустую строку
  2. .
  3. Только расширение — этот метод вернет String после точки, например «gitignore»

2.2. FilenameUtils.getExtension из Apache Commons IO

При втором подходе мы найдем расширение, используя служебный класс, предоставляемый библиотекой ввода-вывода Apache Commons:

Здесь вместо имени файла мы также можем указать полный путь к файлу, например, «C:/baeldung/com/demo.java».< /p>

Метод getExtension(String) проверит, является ли данное имя файла пустым или нет.

Если filename пустое или пустое значение, getExtension(String filename) вернет экземпляр, который ему был предоставлен. В противном случае возвращается расширение имени файла.

Для этого он использует метод indexOfExtension(String), который, в свою очередь, использует lastIndexof(char) для поиска последнего вхождения ".". Оба эти метода предоставляются FilenameUtils.

Этот метод также проверяет отсутствие разделителя каталогов после последней точки с помощью другого метода indexOfLastSeparator(String), который будет обрабатывать файл в формате Unix или Windows.

Особые случаи:

  1. Без расширения: этот метод вернет пустую строку.
  2. Только расширение — этот метод вернет String после точки, например «gitignore»

2.3. Использование библиотеки Гуавы

В этом последнем подходе мы будем использовать библиотеку Guava для поиска расширения.

Чтобы добавить библиотеку Guava, мы можем добавить следующую зависимость в наш pom.xml:

Последнюю зависимость можно найти в Maven Central.

После добавления библиотеки мы можем просто использовать ее метод getFileExtension:

Метод getFileExtension(String) сначала проверит, является ли данное имя файла пустым.

Если имя файла не пусто, будет создан экземпляр File путем преобразования данного filename в абстрактный путь и вызов Метод File getName() над ним, который вернет имя файла, обозначенное этим абстрактным путем, или пустую строку, если задано имя файла пусто.

На основе этого возвращаемого значения извлекается индекс последнего вхождения символа «.». с помощью встроенного метода класса String lastIndexOf(char).

Особые случаи:

  1. Без расширения — этот метод вернет пустую строку
  2. .
  3. Только расширение — этот метод вернет String после точки, например «gitignore»

3. Заключение

Выбирая между Apache Commons и Guava, обе библиотеки имеют некоторые общие функции, а также функции, отсутствующие в их альтернативе.

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

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

  • Использование комбинации методов split() и pop()
  • Использование комбинации методов substring() и lastIndexOf().

В этом руководстве объясняются оба способа, начиная с использования методов split() и pop().

Получить расширение имени файла с помощью методов split() и pop()

Чтобы получить расширение имени файла, вы можете использовать комбинацию методов split() и pop().

Метод split() преобразует строку в массив подстрок, разделенных символом, который вы передали в качестве параметра метода.

Вот пример метода split() в действии:

Затем метод pop() удалит последний элемент массива и вернет его как значение. Вы можете присвоить результат вызова метода pop() переменной следующим образом:

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

Вот как вы можете получить расширение файла из имени файла.

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

Этот метод также хорошо работает при получении файла из элемента HTML, как показано ниже:

Есть еще один способ извлечь расширение файла, давайте узнаем, как это сделать дальше.

Получить расширение имени файла с помощью методов substring() и lastIndexOf()

Метод substring() — это встроенный метод объекта String, который извлекает часть строки из начального и конечного индексов, указанных вами в качестве аргументов.

Имейте в виду, что конечный индекс исключается из результата, поэтому вам нужно выбрать следующий индекс символа, который вы хотите включить в подстроку.

Например, вы можете извлечь "или" из слова "Лошадь" с помощью следующего кода:

Индекс строки начинается с 0, поэтому буква "о" в слове "Horse" будет иметь индекс 1 .

Буква "s" в слове "Horse" имеет значение индекса 3 , поэтому вам нужно указать 4 в качестве второго параметра метода substring().

Если вы опустите второй параметр, метод вернет оставшуюся часть строки, не обрезая ее:

Затем функция lastIndexOf() возвращает значение индекса последнего вхождения указанной строки. Вам нужно указать, что вы хотите искать в качестве аргумента метода.

Например, вот как вернуть последний индекс "a" из "Banana":

Буква "a" в слове "Banana" выше имеет значение индекса 1 , 3 и 5 , поэтому метод lastIndexOf() возвращает только последнее значение, равное 5 .

Зная, как работают эти два метода, вы можете вызвать метод lastIndexOf(), чтобы получить положение индекса последней точки. символ в имени файла, затем вызовите метод substring(), чтобы извлечь расширение.

Вот пример:

Чтобы сделать код более лаконичным, вы можете вызывать оба метода в одной строке, как показано ниже:

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

Как и в случае с методами split() и pop(), вы можете написать небольшую вспомогательную функцию для получения расширения, чтобы вам не приходилось повторяться каждый раз, когда оно вам нужно:

В любое время, когда вам нужно получить расширение, просто вызовите метод getExtension(), как показано выше 😉

Статьи по теме:

Повысьте уровень своих навыков программирования

Я время от времени рассылаю электронные письма с последними руководствами по программированию. Оставьте свой адрес электронной почты в поле ниже, и я буду присылать новые материалы прямо на ваш почтовый ящик!


сообщить об этом объявлении


сообщить об этом объявлении

О нас

Натан Себхастян – инженер-программист, который любит писать технические руководства. Изучайте JavaScript и другие концепции технологий веб-разработки с помощью простых для понимания объяснений, написанных простым английским языком.

Python Get File Extension Cover Image

В этом руководстве вы узнаете, как использовать Python для получения расширения файла. Вы сделаете это, используя как библиотеку pathlib, так и модуль os.path.

Умение легко работать с файлами в Python – одно из самых сильных сторон языка. Например, вы можете использовать библиотеку glob для перебора файлов в папке. Когда вы делаете это, знание расширения каждого файла может повлиять на дальнейшие решения. Из-за этого знание того, как получить расширение файла, является навыком импорта! Давайте начнем изучать, как использовать Python для получения расширения файла в Windows, Mac и Linux!

Быстрый ответ: используйте Pathlib

Быстрый ответ - Python Получить файл

Оглавление

Использование Python Pathlib для получения расширения файла

Библиотека Python pathlib невероятно упрощает работу с путями и управление ими. Из-за этого вполне логично, что у библиотеки есть способ доступа к расширению файла.

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

Давайте посмотрим, как мы можем использовать библиотеку pathlib в Python для получения расширения файла:

Здесь мы видим, что мы передали путь к файлу в класс Path, создав объект Path. После того, как мы это сделали, мы можем получить доступ к различным атрибутам, включая атрибут .suffix. Когда мы присвоили это переменной с именем extension , мы распечатали его, получив обратно .xlsx.

Этот метод хорошо работает как на компьютерах Mac, так и на Linux. Однако при работе с Windows пути к файлам работают немного по-другому.

По этой причине при использовании Windows создавайте путь к файлу в виде «сырой» строки. Но как это сделать? Просто добавьте к строке префикс r, например, r'some string'. Это позволит Python узнать, что нельзя использовать обратную косую черту в качестве escape-символов.

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

Хотите узнать больше? Хотите узнать, как использовать библиотеку pathlib для автоматического переименования файлов в Python? Посмотрите мой подробный учебник и видео о науке о данных!

Использование os.path в Python для получения расширения файла

Модуль os.path позволяет нам легко работать с нашей операционной системой! Модуль пути позволяет нам использовать пути к файлам по-разному, в том числе позволяя нам получить расширение файла.

Модуль os.path имеет полезную функцию splitext() , которая позволяет нам разбивать пути к файлам на отдельные компоненты. К счастью, splitext() — это умная функция, которая умеет отделять расширения файлов, а не просто разбивать строку.

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

  1. Мы импортируем os.path . Вместо записи из пути импорта ОС мы используем эту форму импорта, чтобы оставить путь переменной открытым и чистым.
  2. Мы загружаем нашу переменную file_path. Помните: если вы работаете в Windows, сделайте путь к файлу необработанной строкой, предварительно зафиксировав букву r перед открывающей кавычкой.
  3. Примените функцию splitext() к пути к файлу. Затем мы получаем доступ к последнему элементу элемента.

Функция splitext() возвращает кортеж: первая часть будет именем файла, а вторая — его расширением. Из-за этого, если нам нужно только расширение файла, мы можем просто получить доступ к последнему элементу кортежа.

Как использовать расширение файла Python

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

Один из удобных способов — воздействовать, скажем, только на файлы Excel. Если вы пишете цикл for, вы можете сначала проверить, является ли файл файлом Excel, а затем загрузить его в фрейм данных Pandas. Такой подход позволит вам пропустить файлы, которые на самом деле могут не содержать никаких данных.

Давайте посмотрим, как это сделать в Python и Pandas:

Заключение

В этом посте вы узнали, как использовать Python для получения расширения файла. Вы узнали, как это сделать, используя как библиотеку pathlib, так и модуль os.path, используя функцию splitext(). Вы научились делать это в Windows, Mac и Linux, чтобы ваш код мог работать в разных системах.

Чтобы узнать больше о функции splitext(), ознакомьтесь с официальной документацией здесь.

Читайте также: