как узнать путь файла python

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

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

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

Для того чтобы узнать в Python абсолютный путь к файлу, потребуется воспользоваться библиотекой os. Её подключаем с помощью команды import os. В классе path есть метод abspath. Вот пример использования.

Так же можно воспользоваться и стандартной библиотекой pathlib. Она вошла в состав основных библиотек, начиная с версии Python 3.4. До этого надо было ее инсталлировать с помощью команды pip install pathlib. Она предназначена для работы с путями файловой системы в разных ОС и отлично подойдет для решения данной задачи.

Имя файла

Чтобы узнать имя файла из полной строки с путем, воспользуемся методом basename модуля os.

Здесь перед строкой вставил r, чтобы подавить возможное возникновение служебных символов. Например, в данном случае если не указать r, то \f считалось бы символом перевода страницы.

Без расширения

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

Видно, что последнее расширение архиватора gz было отброшено, в то время как расширение несжатого архива tar осталось в имени.

Если же нам нужно только имя, то можно отбросить все символы полученной строки, которые идут после первой точки. Символ точки тоже отбросим.

Дополним предыдущий пример следующим кодом:

Расширение файла

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

Аналогично можно воспользоваться библиотекой pathlib. Воспользуемся методом suffix.

Но в нашем случае два расширения. Их можно узнать с помощью функции suffixes. Она возвращает список, элементами которого и будут расширения. Ниже приведен пример получения списка расширений.

Источник

Pathlib — манипуляция путями, создание и удаление папок и файлов

как узнать путь файла python. pathlib. как узнать путь файла python фото. как узнать путь файла python-pathlib. картинка как узнать путь файла python. картинка pathlib.

Модуль Pathlib в Python упрощает работу с файлами и папками. Он доступен в Python 3.4 и более поздних версиях. Pathlib сочетает в себе лучшее из модулей файловой системы Python — os, os.path, glob и так далее.

Содержание статьи

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

В данной статье мы подробно изучим модуль Pathlib с помощью различных примеров.

Концепт пути и директории в Python

Перед началом подробного рассмотрения модуля Pathlib важно разобраться в разнице между главными концептами темы — путем (path) и директорией (directory).

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

Источник

как узнать путь файла python. 4. как узнать путь файла python фото. как узнать путь файла python-4. картинка как узнать путь файла python. картинка 4.

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

Модуль OS не нуждается в дополнительной установке, так как поставляется вместе с инсталлятором Python.

Навигация по посту

Получение директорий и списка файлов

Есть несколько способов вернуть список каталогов и файлов по указанному пути. Первый способ используя os.walk, который возвращает генератор:

как узнать путь файла python. 1. как узнать путь файла python фото. как узнать путь файла python-1. картинка как узнать путь файла python. картинка 1.

Такие объекты можно итерировать для понятного отображения структуры:

как узнать путь файла python. 3. как узнать путь файла python фото. как узнать путь файла python-3. картинка как узнать путь файла python. картинка 3.

Сам кортеж делится на 3 объекта: текущая директория, имя вложенных папок (если есть), список файлов. Я так же разделил их на примере ниже:

как узнать путь файла python. 2. как узнать путь файла python фото. как узнать путь файла python-2. картинка как узнать путь файла python. картинка 2.

Os.walk является рекурсивным методом. Это значит, что для поиска файлов в конкретной директории вы будете итерировать и все вложенные папки. Обойти это с помощью самого метода нельзя, но вы можете использовать break так как os.walk возвращает указанную директорию первой. Можно так же использовать next():

как узнать путь файла python. 4. как узнать путь файла python фото. как узнать путь файла python-4. картинка как узнать путь файла python. картинка 4.

Получение файлов через listdir

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

как узнать путь файла python. 5. как узнать путь файла python фото. как узнать путь файла python-5. картинка как узнать путь файла python. картинка 5.

Получение полного абсолютного пути к файлам

Для последующего чтения файла нам может понадобится абсолютный путь. Мы можем использовать обычный метод сложения строк или метод os.path.join, который сделает то же самое, но и снизит вероятность ошибки если программа работает на разных ОС:

как узнать путь файла python. 6. как узнать путь файла python фото. как узнать путь файла python-6. картинка как узнать путь файла python. картинка 6.

Исключение каталогов или файлов из списка

У нас может быть список полных путей, например из списка выше, из которого мы хотим исключить папки или файлы. Для этого используется os.path.isfile:

как узнать путь файла python. 7. как узнать путь файла python фото. как узнать путь файла python-7. картинка как узнать путь файла python. картинка 7.

Такой же принцип имеют следующие методы:

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

как узнать путь файла python. 8. как узнать путь файла python фото. как узнать путь файла python-8. картинка как узнать путь файла python. картинка 8.

Создание и удаление директорий

Методы по изменению папок следующие:

как узнать путь файла python. 9. как узнать путь файла python фото. как узнать путь файла python-9. картинка как узнать путь файла python. картинка 9.

Если попытаться создать несколько вложенных папок сразу, используя предыдущий пример, появится ошибка FileNotFoundError. Создание папок включая промежуточные выполняется с os.makedirs():

Проверка директорий и файлов на существование

как узнать путь файла python. 10. как узнать путь файла python фото. как узнать путь файла python-10. картинка как узнать путь файла python. картинка 10.

Получение и изменение текущей директории

Запуская любую программу или консоль, например CMD, мы это делаем из определенной директории. С этой и соседней директорией мы можем работать без указания полного пути. Для того что бы узнать такую директорию в Python используется метод os.getcwd():

как узнать путь файла python. 11. как узнать путь файла python фото. как узнать путь файла python-11. картинка как узнать путь файла python. картинка 11.

как узнать путь файла python. 12. как узнать путь файла python фото. как узнать путь файла python-12. картинка как узнать путь файла python. картинка 12.

Так же как и в любых языках, в любых методах описанных выше, вы можете использовать ‘..’ для работы с директорией выше или ‘/’ для работы со внутренней:

Источник

Как получить путь к текущему исполняемому файлу в Python?

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

sys.argv[0]

__файл__

вопросы, связанные с неполными ответами:

Я ищу универсального решения, тот, который будет работать во всех приведенных выше случаях использования.

обновление

вот результат теста:

вывод python a.py (on Windows)

subdir/b.py

дерево

10 ответов

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

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

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

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

во-первых, вам нужно импортировать из inspect и os

далее, везде, где вы хотите найти исходный файл, вы просто используете

я столкнулся с подобной проблемой, и я думаю, что это может решить проблему:

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

Мое типичное использование:

теперь я использую _ _ modpath _ _ вместо _ _ file__.

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

это решение является надежным даже в исполняемых файлах

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

во-первых, вам нужно импортировать части проверить и os модули.

далее использовать следующая строка в любом другом месте нужна в вашем коде Python:

как работает:

из встроенного модуля os (описание ниже) импортируется.

OS подпрограммы для Mac, NT, или Posix в зависимости от того, какая система мы находимся на.

получить полезную информацию из live Python объекты.

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

используя abspath в результате getsourcefile(lambda:0) должен убедиться,что созданный путь к файлу является полным путем к файлу Python.
Это объясняло решение изначально было основано на коде из ответа на как получить путь к текущему исполняемому файлу в Python?.

это должно сделать трюк кросс-платформенным способом (пока вы не используете интерпретатор или что-то еще):

у меня нет Mac; поэтому я не тестировал это на одном. Пожалуйста, дайте мне знать, если это сработает, как кажется, это должно быть. Я тестировал это в Linux (Xubuntu) с Python 3.4. Обратите внимание, что многие решения этой проблемы не работают на Маках (так как я слышал, что __file__ нет на Macs).

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

Источник

Как получить путь к текущему исполняемому файлу в Python?

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

sys.argv[0]

_ _ file__

вопросы, связанные с неполными ответами:

Я ищу универсального решения, которая будет работать во всех вышеперечисленных случаях использовать.

обновление

вот результат теста:

вывод python a.py (on Windows)

subdir/b.py

дерево

10 ответов:

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

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

Если у вас есть несколько основных скриптов в разных каталогах, вам может понадобиться более одной копии module_locator.

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

во-первых, вам нужно импортировать из inspect и os

далее, везде, где вы хотите найти исходный файл от вас просто использовать

я столкнулся с подобной проблемой, и я думаю, что это может решить проблему:

Он работает для обычных скриптов и в режиме ожидания. Все, что я могу сказать, это попробовать его на других!

Мое типичное использование:

сейчас я использую __MODPATH выступает__ вместо __файл__.

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

это решение надежно даже в исполняемых файлах

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

во-первых, вам нужно импортировать части проверить и os модули.

далее использовать следующая строка в любом другом месте это необходимо в вашем коде Python:

как работает:

из встроенного модуля os (описание ниже) импортируется.

процедуры ОС для Mac, NT или Posix в зависимости от того, на какой системе мы находимся.

получить полезную информацию от live Python объекты.

‘ в оболочке Python или возвращает путь к файлу текущего выполняемого кода Python.

используя abspath в результате getsourcefile(lambda:0) должен убедиться, что созданный путь к файлу является полным путем к файлу Python.
Это объяснило решение изначально было основано на коде из ответа по адресу как получить путь к текущему исполняемому файлу в Python?.

это должно сделать трюк кросс-платформенным способом (пока вы не используете интерпретатор или что-то еще):

у меня нет Mac; так что, я не проверял это на одном. Пожалуйста, дайте мне знать, если это работает, как кажется, это должно быть. Я тестировал это в Linux (Xubuntu) с Python 3.4. Обратите внимание, что многие решения этой проблемы не работают на Mac (так как я слышал, что __file__ нет на Macs).

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

можно использовать Path С pathlib модуль:

вы можете использовать вызов parent чтобы идти дальше по пути:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *