Путь, имя и расширение файла
Достаточно часто возникают ситуации, когда у нас есть полное имя файла, а требуется узнать его расширение. Или добавить нужное расширение, когда не известно, ввел его пользователь или нет. Иногда у нас есть относительный путь до файла, а требуется узнать абсолютный. Про основные методы работы с именем файла и будет эта статья.
Абсолютный путь к файлу
Для того чтобы узнать в Python абсолютный путь к файлу, потребуется воспользоваться библиотекой os. Её подключаем с помощью команды import os. В классе path есть метод abspath. Вот пример использования.
import os p = os.path.abspath('file.txt ') print(p) C:\python3\file.txt
Так же можно воспользоваться и стандартной библиотекой pathlib. Она вошла в состав основных библиотек, начиная с версии Python 3.4. До этого надо было ее инсталлировать с помощью команды pip install pathlib. Она предназначена для работы с путями файловой системы в разных ОС и отлично подойдет для решения данной задачи.
import pathlib p = pathlib.Path('file.txt ') print(p) C:\python3\file.txt
Имя файла
Чтобы узнать имя файла из полной строки с путем, воспользуемся методом basename модуля os.
import os name = os.path.basename(r'C:\python3\file.txt ') print(name) file.txt
Здесь перед строкой вставил r, чтобы подавить возможное возникновение служебных символов. Например, в данном случае если не указать r, то \f считалось бы символом перевода страницы.
Без расширения
Теперь разберемся, как в Python узнать имя файла без расширения. Воспользуемся методом splittext. В этот раз для примера возьмем файл с двойным расширением, чтобы проверить, как будут в этой ситуации работать стандартны функции.
from os import path full_name = path.basename(r'C:\python3\file.tar.gz ') name = path.splitext(full_name)[0] print(name) file.tar
Видно, что последнее расширение архиватора gz было отброшено, в то время как расширение несжатого архива tar осталось в имени.
Если же нам нужно только имя, то можно отбросить все символы полученной строки, которые идут после первой точки. Символ точки тоже отбросим.
Дополним предыдущий пример следующим кодом:
index = name.index('.') print(name[:index]) file
Расширение файла
В Python получить расширение файла можно аналогичным образом с помощью той же функции splitext. Она возвращает кортеж. Первый элемент кортежа имя, а второй – расширение. В данном случае нам нужен второй элемент. Индекс второго элемента равен единице, так как отсчет их идет от нуля.
from os import path full_name = path.basename(r'C:\python3\file.tar.gz ') name = path.splitext(full_name)[1] print(name) .gz
Аналогично можно воспользоваться библиотекой pathlib. Воспользуемся методом suffix.
from pathlib import Path print(Path(r'C:\python3\file.tar.gz ').suffix) .gz
Но в нашем случае два расширения. Их можно узнать с помощью функции suffixes. Она возвращает список, элементами которого и будут расширения. Ниже приведен пример получения списка расширений.
from pathlib import Path print(Path(r'C:\python3\file.tar.gz ').suffixes) ['.tar', '.gz ']
Для того, чтобы получить имя файла или расширение из полного пути или для получения абсолютного пути к файлу используйте библиотеки os и pathlib. Лучше воспользоваться готовым решением из стандартой библиотеками, чем писать свое решение.
Строка: Получить имя и расширение файла.
Дана строка, содержащая полный путь к файлу, начиная с диска. Вывести только имя файла и расширение.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Дана строка, содержащая полное имя файла. Выделить из этой строки имя и расширение файла
дана строка, содержащая полное имя файла, т.е. имя диска, список каналов(путь), собственно имя и.
Пользователь вводит строку, содержащую полное имя файла. Вывести имя файла, расширение и имя первого каталога
Пользователь вводит строку, содержащую полное имя файла (Имя диска, список каталогов, имя файла и.
1183 / 759 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
adr = 'C:\Program Files\Google\Drive\googledrivesync64.dll' print(adr.split('\\')[-1])
googledrivesync64.dll
Am I evil? Yes, I am!
![]()
![]()
16119 / 9755 / 2730
Регистрация: 21.10.2017
Сообщений: 21,624
re.search(r'\w+\.\w+$', input())
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

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

Как получить расширение файла из имениИмеется строка com.archive.zip, и мне нужно получ
Имеется строка com.archive.zip, и мне нужно получить только последнюю подстроку, то есть.
Выделить с введенной строки отдельно имя файла, расширение и имя первого каталога
Пользователь вводит строку коротая содержит полное имя файла (имя дисков, список каталогов, имя.
Выводим расширение файла
Напишите программу, которая принимает имя файла и выводит его расширение. Если расширение у файла определить невозможно, выбросите исключение.
Решение:
def get_extension(filename): filename_parts = filename.split('.') if len(filename_parts) < 2: # filename has no dots raise ValueError('the file has no extension') first, *middle, last = filename_parts if not last or not first and not middle: # example filenames: .filename, filename., file.name. raise ValueError('the file has no extension') return filename_parts[-1] print(get_extension('abc.py')) print(get_extension('abc')) # raises ValueError print(get_extension('.abc')) # raises ValueError print(get_extension('.abc.def.')) # raises ValueError
Как переименовать расширение файла в Python

Задача: в папке лежит файл с расширением .raw и мне нужно переименовать этот файл на такой же, но с другим расширением .txt — как это делать?
Решение:
Нужно импортировать модуль os , у которого есть методы os.path.splitext() и os.rename() . Методом os.path.splitext() можно разделить исходный файл на две части — его имя и разрешение, которое попадает в квадратные скобки как [0] — имя и [1] — разрешение. Далее нужно просто склеить имя с новым разрешением через os.rename() .
#Переименовать файл из .raw в .txt import os file="C:/Users/Vasya/Documents/Python/tangaria/scores.raw" filename = os.path.splitext(file)[0] os.rename(file, filename + ".txt")
Запись опубликована в рубрике Python. Добавьте в закладки постоянную ссылку.
