0

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

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 程序的计算机之外找到 Chimera。有什么方法可以在任何计算机上通过 python 程序搜索路径?

4

3 回答 3

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")])
于 2013-06-05T12:00:48.940 回答
0

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

在这里寻找AbstractPath 构造函数

例子:

from unipath import Path
prom_dir = Path(__file__)
于 2013-06-05T11:52:33.153 回答
0

which适用于 Linux 和whereWindows 的。它们都为您提供可执行文件的路径,前提是它位于控制台“搜索”的目录中(因此在 Windows 的情况下它必须位于 %PATH% 中)

于 2013-06-05T11:59:16.310 回答