- How to get file extension in Python?
- Python get file extension using os module splitext() function
- Python get file extension using pathlib module
- Как найти файлы с определенным расширением только на Python
- Метод поиска файлов с определённым расширением glob.glob
- Метод os.listdir() для поиска файлов с определённым расширением
- Метод pathlib.glob для поиска файлов с определённым расширением
- Поиск файлов с определенным расширением в каталоге и его подкаталогах на Python
- Модуль pathlib ищет файлы рекурсивно
- Сопутствующая статья — Python File
- Python: Get a File’s Extension (Windows, Mac, and Linux)
- Using Python Pathlib to Get a File’s Extension
How to get file extension in Python?
In Python, we can extract the file extension using two approaches. Let’s take a look at each of these with examples.
Python get file extension using os module splitext() function
The os module has extensive functions for interacting with the operating system. The OS module can be used to easily create, modify, delete, and fetch file contents or directories.
Syntax: os.path.splitext(path)
The function splitext() will take the path as an argument and return the tuple with filename and extension.
import os # returns tuple wit filename and extension file_details = os.path.splitext('/home/usr/sample.txt') print("File Details ",file_details) # extract the file name and extension file_name = file_details[0] file_extension = file_details[1] print("File Name: ", file_name) print("File Extension: ", file_extension)
File Details ('/home/usr/sample', '.txt') File Name: /home/usr/sample File Extension: .txt
Python get file extension using pathlib module
pathlib module comes as a standard utility module in Python and offers classes representing filesystem paths with semantics appropriate for different operating systems.
pathlib.path().suffix method can be used to extract the extension of the given file path.
import pathlib # pathlib function which returns the file extension file_extension = pathlib.Path('/home/usr/sample.txt').suffix print("The given File Extension is : ", file_extension)
The given File Extension is : .txt
What if your extension is like sample.tar.gz with multiple dots, and if you use the above methods, you will only get the last part of the extension, not the full extension.
You can use the pathlib module with suffixes property which returns all the extensions as a list. Using that, we can join into a single string, as shown below.
import pathlib # pathlib function which returns the file extension file_extension = pathlib.Path('/home/usr/sample.tar.gz').suffixes print("File extension ", file_extension) print("The given File Extension is : ", ''.join(file_extension))
File extension ['.tar', '.gz'] The given File Extension is : .tar.gz
Как найти файлы с определенным расширением только на Python
- Метод поиска файлов с определённым расширением glob.glob
- Метод os.listdir() для поиска файлов с определённым расширением
- Метод pathlib.glob для поиска файлов с определённым расширением
- Поиск файлов с определенным расширением в каталоге и его подкаталогах на Python
- Модуль pathlib ищет файлы рекурсивно
В статье представлены различные методы поиска файлов с определённым расширением только на Python.
Метод поиска файлов с определённым расширением glob.glob
Мы могли бы использовать модуль glob.glob для поиска файлов с определённым расширением только на Python.
import glob targetPattern = r"C:\Test\*.txt" glob.glob(targetPattern)
Приведенные выше коды демонстрируют, как найти файлы с расширением txt в директории C:\Test .
Метод os.listdir() для поиска файлов с определённым расширением
Функция os.listdir() перечисляет все файлы в данной директории, без информации о пути к файлу. Вы можете извлечь файлы с определенным расширением, используя функцию str.endswith() .
>>> import os >>> fileDir = r"C:\Test" >>> fileExt = r".txt" >>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)] ['test.txt', 'test1.txt']
Вам необходимо построить полный путь с помощью функции os.path.join() .
>>> import os >>> fileDir = r"C:\Test" >>> fileExt = r".txt" >>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)] ['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']
Метод pathlib.glob для поиска файлов с определённым расширением
pathlib модуль представлен на Python 3.4, который предлагает объектно-ориентированные пути к файловой системе. Он предоставляет два стиля: Пути Windows в ОС Windows и пути POSIX в Unix-alike системах.
>>> import pathlib >>> fileDir = r"C:\Test" >>> fileExt = r"*.txt" >>> list(pathlib.Path(fileDir).glob(fileExt)) [WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]
Результат представлен с помощью WindowsPath , и вы можете преобразовать результат в строковое представление, добавив str() , типа
>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)] ['C:\\Test\\test.txt', 'C:\\Test\\test.txt']
Поиск файлов с определенным расширением в каталоге и его подкаталогах на Python
Шаблон C:\Test\*.txt ищет только txt файлы в каталоге C:\Test , но не в его подкаталогах. Если вы также хотите получить txt файлы в подкаталогах, вы можете немного изменить шаблон.
import glob targetPattern = r"C:\Test\**\*.txt" glob.glob(targetPattern)
Подстановка ** между Test и \*.txt означает, что он должен найти txt файлы как в каталоге, так и в его подкаталогах.
Модуль pathlib ищет файлы рекурсивно
Подобно добавлению ** в glob.glob для рекурсивного поиска файлов, вы также можете добавить ** в pathlib.Path.glob метод для рекурсивного поиска файлов с определённым расширением.
>>> import pathlib >>> fileDir = r"C:\Test" >>> fileExt = r"**\*.txt" >>> list(pathlib.Path(fileDir).glob(fileExt)) [WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
Сопутствующая статья — Python File
Python: Get a File’s Extension (Windows, Mac, and Linux)
In this tutorial, you’ll learn how to use Python to get a file extension. You’ll accomplish this using both the pathlib library and the os.path module.
Being able to work with files in Python in an easy manner is one of the languages greatest strength. You could, for example use the glob library to iterate over files in a folder. When you do this, knowing what the file extension of each file may drive further decisions. Because of this, knowing how to get a file’s extension is an import skill! Let’s get started learning how to use Python to get a file’s extension, in Windows, Mac, and Linux!
The Quick Answer: Use Pathlib
Using Python Pathlib to Get a File’s Extension
The Python pathlib library makes it incredibly easy to work with and manipulate paths. Because of this, it makes perfect sense that the library would have the way of accessing a file’s extension.
The pathlib library comes with a class named Path , which we use to create path-based objects. When we load our file’s path into a Path object, we can access specific attributes about the object by using its built-in properties.
Let’s see how we can use the pathlib library in Python to get a file’s extension:
# Get a file's extension using pathlib import pathlib file_path = "/Users/datagy/Desktop/Important Spreadsheet.xlsx" extension = pathlib.Path(file_path).suffix print(extension) # Returns: .xlsx
We can see here that we passed a file’s path into the Path class, creating a Path object. After we did this, we can access different attributes, including the .suffix attribute. When we assigned this to a variable named extension , we printed it, getting .xlsx back.
This method works well for both Mac and Linux computers. When you’re working with Windows, however, the file paths operate a little differently.
Because of this, when using Windows, create your file path as a “raw” string. But how do you do this? Simply prefix your string with a r , like this r’some string’ . This will let Python know to not use the backslashes as escape characters.
Now that we’ve taken a look at how to use pathlib in Python to get a file extension, let’s explore how we can do the same using the os.path module.
Want to learn more? Want to learn how to use the pathlib library to automatically rename files in Python? Check out my in-depth tutorial and video on Towards Data Science!