为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2019-10-14 14:23:10
在Python中,是否有一种可移植且简单的方法来测试可执行程序是否存在?简单地说,我的意思是像which命令这样的东西,将是完美的。我不想手动搜索PATH或涉及尝试使用Popen&al 执行它的尝试,以查看它是否失败(这就是我现在正在做的,但是可以想象是launchmissiles)
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我想到的最简单的方法:


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项目。


查看完整回答
反对 回复 2019-10-14
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我知道这是一个古老的问题,但是您可以使用distutils.spawn.find_executable。自python 2.4起已被记录下来,自python 1.6起就已存在。


import distutils.spawn

distutils.spawn.find_executable("notepad.exe")

此外,Python 3.3现在提供了shutil.which()。


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 645 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信