是否有等同于“which”命令的Python

新手上路,请多包涵

换句话说,是否有一种跨平台的方式来知道哪个文件将由 subprocess.Popen(file) 执行而不先执行它?

原文由 Joe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 631
2 个回答

过时的(不再正确)

我相信 python 库中没有

>>> def which(pgm):
    path=os.getenv('PATH')
    for p in path.split(os.path.pathsep):
        p=os.path.join(p,pgm)
        if os.path.exists(p) and os.access(p,os.X_OK):
            return p


>>> os.which=which
>>> os.which('ls.exe')
'C:\\GNUwin32\\bin\\ls.exe'

原文由 Abhijit 发布,翻译遵循 CC BY-SA 4.0 许可协议

Python 3.3 添加了 shutil.which() 以提供发现可执行文件的跨平台方法:

http://docs.python.org/3.3/library/shutil.html#shutil.which

返回可执行文件的路径,如果调用给定的 cmd,该可执行文件将运行。如果没有调用 cmd,则返回 None。

示例调用:

 >>> shutil.which("python")
'/usr/local/bin/python'

>>> shutil.which("python")
'C:\\Python33\\python.EXE'

不幸的是,这还没有被反向移植到 2.7.x。

原文由 joemaller 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题