Вообще-то, я не думаю, что это такая хорошая идея поиск путь для программы. Представьте себе, например, что на машине были установлены две разные версии. Вы уверены, что найдете справа? Может быть, конфигурационный файл, обработанный стандартным модулем ConfigParser, будет лучшим вариантом?
Во всяком случае, чтобы вернуться к вашему вопросу, для того, чтобы найти файл или каталог, вы можете попробовать использовать os.walk которые рекурсивно блуждания корыто дерева каталогов.
Вот пример, вызывающий os.walk
от генератора, позволяющий собирать первые или все совпадающие имена файлов. Обратите внимание, что результат генератора основан только на файле. Если вам требуется более совершенная фильтрация (скажем, чтобы сохранить только файлов), вы, вероятно, будете использовать что-то вроде os.stat() для продления теста.
import os
def fileInPath(name, root):
for base, dirs, files in os.walk(root):
if name in files:
yield os.path.join(base, name)
print("Search for only one result:")
print(next(fileInPath("python", "/home/sylvain")))
print("Display all matching files:")
print([i for i in fileInPath("python", "/home/sylvain")])
Я не знаком с химерой, но вы можете искать в реестре его путь, а затем использовать его? Если нет, вам придется проползать через возможные места (и, возможно, даже весь диск). –
Это явно для Windows? В Linux вы можете использовать 'which', чтобы найти путь к исполняемому файлу. Возможно, что-то похожее для Windows. – elactic
Вы можете использовать 'os.walk', чтобы найти исполняемый файл: http://stackoverflow.com/a/1724723/599884 – Christoph