Как получить полный путь к файлу или программе Windows? Python
Как получить полный путь к файлу или программе в Windows, для его/ее дальнейшего открытия с помощью subprocess?
Отслеживать
задан 13 янв 2020 в 20:23
265 5 5 серебряных знаков 12 12 бронзовых знаков
можете уточнить суть вопроса и привести примеры? что вам известно о файле / программе ?
13 янв 2020 в 20:24
@MaxU, у меня есть приложение, возьмём условный Google Chrome. На вход функции нужно дать имя программы, а на выходе получить полный путь к ней. Возможно ли это сделать?
13 янв 2020 в 20:31
путь к этой программе прописан в переменной окружения PATH ?
13 янв 2020 в 20:32
@MaxU, нет. Нужно добавить?
13 янв 2020 в 20:35
я не просто так попросил уточнить вопрос. Если это программа которая открывает определенный тип файлов по умолчанию в Windows, то данную информацию можно найти в реестре Windows. Если к данной программе прописан путь в переменной PATH — тоже можно найти. В противном случае придется искать данный файл во всех папках всех доступных дисков — это ОЧЕНЬ медленно
Получение пути и имени текущего исполняемого файла 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() , она вернет путь к директории, откуда был запущен первоначальный скрипт, а не текущего исполняемого файла.
Надеемся, что эта информация поможет в работе с Python и позволит лучше понимать, как работает этот замечательный язык программирования.
Python-сообщество
- Начало
- » Python для новичков
- » Как указать путь к файлу в предыдущем каталоге?
#1 Дек. 18, 2014 17:30:40
Strelok-den Зарегистрирован: 2014-03-25 Сообщения: 63 Репутация: 0 Профиль Отправить e-mail
Как указать путь к файлу в предыдущем каталоге?
Допустим есть файл (/vasa/ttt/petia/test.py ), в нем мне нужно импортировать модуль (/vasa/ttt/kola/file.py) основываясь на os.path.dirname(__file__)…
Т/е указать путь на предыдущий каталог…
#2 Дек. 18, 2014 18:02:11
botinag Зарегистрирован: 2014-02-20 Сообщения: 179 Репутация: 35 Профиль Отправить e-mail
Как указать путь к файлу в предыдущем каталоге?
путь на уровень выше:
import os.path os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
Получить путь к python.exe
Для участия в обсуждениях и оформления подписки на новые сообщения форума вам необходимо зарегистрироваться.
Страницы: 1
Cообщений на странице:
Получить путь к python.exe
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
24.02.2020 13:03:44
Сразу в пути использовать переменную? Типа
os.execute("%WINDIR%\\notepad.exe")
Пользователь
Сообщений: 355 Регистрация: 29.03.2017
24.02.2020 16:27:56
os.execute ( "%WINDIR%\\notepad.exe" )
Надо чтобы работало у любого желающего, кто захочет это запустить. Не только у меня. Надо универсальный метод.
Пользователь
Сообщений: 1188 Регистрация: 02.07.2015
24.02.2020 18:51:20
| Цитата |
|---|
| Let_it_go написал: os.getenv(«PYTHON_PATH») |
Ну так-то не всякий инсталлятор питона выставляет системные переменные.
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
24.02.2020 22:38:25
| Цитата |
|---|
| Let_it_go написал: Надо чтобы работало у любого желающего, кто захочет это запустить. Не только у меня. Надо универсальный метод. |
По идее, пайтон должен быть в PATH, и тогда запустить его можно просто по имени экзешника без пути. Либо его там нет и тогда он может (не) быть где угодно, скажем, в какой-нибудь N:\\archive\\1986\\rarely-used-tools\\old-versions\\python, то есть, строго говоря, это равноценно тому, что его и нет вовсе.
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
24.02.2020 22:58:50
Кстати говоря, переменная называется PYTHONPATH без андерскора, может в этом дело?
Пользователь
Сообщений: 355 Регистрация: 29.03.2017
25.02.2020 15:53:25
| Цитата |
|---|
| Anton написал: Кстати говоря, переменная называется PYTHONPATH без андерскора, может в этом дело? |
Антон, спасибо за вашу помощь, вот дополнительная информация
Строчка
message (os.getenv('PATH'),1)

выдаёт
То есть среди этих путей есть нужный!
Но строка
message (os.getenv('PYTHONPATH') or 'type_nil',1)
по прежнему выдаёт нил.
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
25.02.2020 16:09:34
Значит, нет такой переменной. В консоли выполните set без аргументов, увидите все объявленные переменные.
Если питон в PATH, можно его просто выполнить без указания пути. Если же задача именно найти его, а не запустить, можно сплитнуть PATH по точкам с запятой, к каждому пути добавить python.exe и спросить, есть ли такой файл, если есть, мы его нашли. Можно попараноить и найти все варианты, а потом уже решать, какой из них нас интересует, по версии например.
Пользователь
Сообщений: 355 Регистрация: 29.03.2017
25.02.2020 16:59:45
Спасибо, Антон.
os.execute("python.exe C:\\script.py")
работает и без указания полного пути к Питону. Я не знал, что так можно!
Это решает мою проблему, я задал этот вопрос, так как думал, что нужен полный путь к python.exe
