在Python中,是否有一种可移植且简单的方法来测试是否存在可执行程序?
简单地说,我指的是类似于which
的命令,这将是完美的.我不想手动搜索路径,也不想用Popen
&;艾尔,看看它是否失败(这就是我现在正在做的,但想象一下它是launchmissiles
)
在Python中,是否有一种可移植且简单的方法来测试是否存在可执行程序?
简单地说,我指的是类似于which
的命令,这将是完美的.我不想手动搜索路径,也不想用Popen
&;艾尔,看看它是否失败(这就是我现在正在做的,但想象一下它是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):
exe_file = os.path.join(path, program)
if is_exe(exe_file):
return exe_file
return None
Edit:更新了代码示例,包括处理 case 的逻辑,其中提供的参数已经是可执行文件的完整路径,即"which/bin/ls".这模仿了UNIX"which"命令的行为.
Edit:更新为使用操作系统.路径isfile()而不是os.路径每个 comments 都存在().
Edit:path.strip('"')
在这里似乎是不对的.Windows和POSIX似乎都不鼓励引用路径项.