2013-06-05 3 views
0

Я делаю программу в Wich Химера должна быть открыта, я открываю его с:Как получить путь к программе в python?

def generate_files_bat(filename): 
    f = open(filename, 'w') 
    text = """echo off SET PATH=%PATH%;"C:\\Program Files (x86)\\Chimera 1.6.1\\bin" chimera colpeps.cmd""" 
    print >>f, text 
    f.close() 

Но я должен найти химеру помимо компьютера программа питон работает. Есть ли способ, которым путь можно искать программой python на любом компьютере?

+0

Я не знаком с химерой, но вы можете искать в реестре его путь, а затем использовать его? Если нет, вам придется проползать через возможные места (и, возможно, даже весь диск). –

+0

Это явно для Windows? В Linux вы можете использовать 'which', чтобы найти путь к исполняемому файлу. Возможно, что-то похожее для Windows. – elactic

+0

Вы можете использовать 'os.walk', чтобы найти исполняемый файл: http://stackoverflow.com/a/1724723/599884 – Christoph

ответ

0

Существует пакет под названием Unipath, который выполняет элегантные, чистые расчеты пути.

Have смотрите здесь для примера AbstractPath constructor

:

from unipath import Path 
prom_dir = Path(__file__) 
0

Существует which для Linux и where для Windows. Они оба дают вам путь к исполняемому файлу, если он находится в каталоге, который «искал» консоль (поэтому он должен быть в% PATH% в случае Windows).

1

Вообще-то, я не думаю, что это такая хорошая идея поиск путь для программы. Представьте себе, например, что на машине были установлены две разные версии. Вы уверены, что найдете справа? Может быть, конфигурационный файл, обработанный стандартным модулем 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")]) 
Смежные вопросы