Python определить имя файла

Получение пути и имени текущего исполняемого файла Python

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

Допустим, есть три файла: main_script.py , helper_1.py и helper_2.py . В main_script.py вызывается helper_1.py , который в свою очередь запускает helper_2.py . Задача — узнать путь и имя файла helper_2.py , прямо из кода этого файла, без передачи этой информации в качестве аргументов из helper_1.py .

Существует простой способ получить эту информацию, используя встроенный модуль Python, под названием os .

import os current_file = os.path.realpath(__file__) current_directory = os.path.dirname(current_file)

В этом коде, __file__ — это специальная переменная, которая содержит путь к скрипту, который был запущен. Функция os.path.realpath(path) возвращает канонический путь к указанному файлу, устраняя все символические ссылки (если они присутствуют). Таким образом, os.path.realpath(__file__) вернет абсолютный путь до файла.

Функция os.path.dirname(path) возвращает имя директории пути path . Её можно использовать, чтобы получить путь к директории, в которой находится файл.

Также следует отметить, что если попытаться использовать функцию os.getcwd() , она вернет путь к директории, откуда был запущен первоначальный скрипт, а не текущего исполняемого файла.

Читайте также:  Java component remove the

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

Источник

Путь, имя и расширение файла

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

Абсолютный путь к файлу

Для того чтобы узнать в 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. Лучше воспользоваться готовым решением из стандартой библиотеками, чем писать свое решение.

Источник

Извлечь имя файла из пути для любого формата ОС/пути

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

Извлечение имени файла из путей к файлам для платформо-независимых решений

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

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

В Python вы можете извлечь имя файла из пути к файлу, используя различные методы, такие как метод rsplit(), функцию basename() из модуля ОС и модуль Path. Эти методы не зависят от платформы и могут использоваться для обработки различных файловых систем и разделителей в различных компьютерных системах во время автоматизации. Каждый метод имеет свой синтаксис, и вы можете выбрать тот, который соответствует вашим требованиям.

Способ 1: Использование метода rsplit()

Метод rsplit() похож на метод split(), но он разделяет слова или символы, начиная справа, а не слева. Он возвращает список слов или символов в строке, разделенных разделителем. Синтаксис функции:

our_string.rsplit(separator,maxsplit)

Разделитель — это разделитель, который может быть любым символом, если он указан. Значение по умолчанию для этого параметра — пробел.

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

#code for extracting file name #taking input for file path file_name=input("Enter the absolute path of your file=") #spliting the entire file path filename_compo=file_name.split('/') #using rsplit() to separate file name file_name_extracted = filename_compo[-1].rsplit('.', 1) #displaying only the file name print("The file name is wp-block-syntaxhighlighter-code "> 
Enter the absolute path of your file=C:/Downloads/askpython_files.txt The file name is= askpython_files

Использование метода Rsplit

Предложено: что такое переменная __file__ в Python?

Способ 2: Использование функции basename() из модуля ОС

Модуль операционной системы (ОС) в Python содержит различные функции, которые могут устанавливать соединения между операционной системой и пользователем. Мы будем использовать функцию basename() из этого модуля, которая может извлечь базовое имя файла. Нет необходимости устанавливать или загружать какие-либо дополнительные библиотеки, чтобы использовать эту функцию, поскольку она входит в стандартные служебные модули Python. Его синтаксис:

os.path.basename(path_of_the_file)

Код, используемый для извлечения имени файла:

#code for extracting file name #importing required modules import os #taking input for file path file_abpath=input("Enter the absolute path of your file=") #using the basename function from the os module file_nameextracted = os.path.basename(file_abpath) #returns the tuple containing the file file_final = os.path.splitext(file_nameextracted) #only the first index print("The filename is wp-block-syntaxhighlighter-code "> 
Enter the absolute path of your file=C:/users/shreya/downloads/myfolder.txt The filename is= myfolder

Способ 3: использование модуля пути в Python

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

Следующим образом мы можем использовать модуль пути для извлечения имени файла из пути в python.

#code for extracting file name #importing required modules from pathlib import Path file_path = input("enter absolute file path=") # the name attribute returns full name of the file print("The name of the file is wp-block-syntaxhighlighter-code "> 
enter absolute file path=C:/downloads/myfolder/firstprogram.py The name of the file is= firstprogram.py

Проверьте: конвертируйте PDF в файл TXT с помощью Python.

Заключение:

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

Источник

Оцените статью