用Python如何测试一个可执行程序是否存在?

问题:

在Python中,是否有便携和简单的方法来测试可执行程序是否存在?
简单来说,我的意思是像which命令,这将是完美的。我不想手动搜索PATH或涉及尝试使用Popen&al执行它的事情,看看它是否失败(这是我现在在做的,但是想象它是launchmissiles

回答:

最简单的方式我可以想到:

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):
            path = path.strip('"')
            exe_file = os.path.join(path, program)
            if is_exe(exe_file):
                return exe_file

    return None

 编辑:更新的代码示例包括处理提供的参数已经是可执行文件的完整路径的情况的逻辑,即“哪个/ bin / ls”。这模仿UNIX的“哪个”命令的行为。
 编辑:更新为使用os.path.isfile()而不是每个注释的os.path.exists()。

 
 翻译整理: codewenda.com
英文原文:Test if executable exists in Python?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

73 − 72 =