如何在python中获取程序的路径?

如何在python中获取程序的路径?,python,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

我正在做一个需要打开奇美拉的程序,我正在用以下方式打开它:

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程序运行的计算机之外找到奇美拉。python程序在任何计算机上都可以搜索路径吗?

有一个名为的包,它可以进行优雅、干净的路径计算

让我们在这儿找找看

例如:

from unipath import Path
prom_dir = Path(__file__)

Linux有
which
,Windows有
where
。它们都为您提供了可执行文件的路径,前提是它位于控制台“搜索”的目录中(因此在Windows中它必须位于%path%中)

一般来说,我认为搜索程序的路径不是一个好主意。例如,假设机器上安装了两个不同的版本。你确定要找对人吗?也许使用标准模块解析的配置文件是更好的选择

无论如何,回到您的问题,为了找到文件或目录,您可以尝试使用递归遍历目录树的方法

下面是一个从生成器调用
os.walk
的示例,允许您收集第一个或所有匹配的文件名。请注意,生成器结果仅基于文件名。如果您需要更高级的过滤(例如,只保留可执行文件),您可能会使用类似的方法来扩展测试

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中,您可以使用
查找可执行文件的路径。Windows可能也有类似的功能。您可以使用
os.walk
查找可执行文件: