测试Python中是否存在可执行文件?

在Python中,是否有一种可移植且简单的方法来测试可执行程序是否存在?

简单地说,我的意思是像which命令这样的东西,将是完美的。我不想手动搜索PATH或涉及尝试使用Popen&al 执行它的尝试,以查看它是否失败(这就是我现在正在做的,但是可以想象是launchmissiles


红糖糍粑
浏览 646回答 3
3回答

慕的地8271018

我想到的最简单的方法:def which(program):    import os    def is_exe(fpath):        return os.path.isfile(fpath) and os.access(fpath, os.X_OK)    fpath, fname = os.path.split(program)    if fpath:        if is_exe(program):            return program    else:        for path in os.environ["PATH"].split(os.pathsep):            exe_file = os.path.join(path, program)            if is_exe(exe_file):                return exe_file    return None编辑:更新了代码示例,以包括用于处理逻辑的情况,其中所提供的参数已经是可执行文件的完整路径,即“ which / bin / ls”。这模仿了UNIX“哪个”命令的行为。编辑:更新为每个注释使用os.path.isfile()而不是os.path.exists()。编辑:path.strip('"')似乎在这里做错了。Windows和POSIX都似乎不鼓励引用PATH项目。

肥皂起泡泡

我知道这是一个古老的问题,但是您可以使用distutils.spawn.find_executable。自python 2.4起已被记录下来,自python 1.6起就已存在。import distutils.spawndistutils.spawn.find_executable("notepad.exe")此外,Python 3.3现在提供了shutil.which()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python