-
-
Save prince-mishra/09e59095e13fdc6b8a95c42dd6f5dfeb to your computer and use it in GitHub Desktop.
Python Which/Where - Find executable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # https://gist.github.com/4368898 | |
| # Public domain code by anatoly techtonik <[email protected]> | |
| # AKA Linux `which` and Windows `where` | |
| import os | |
| import sys | |
| def find_executable(executable, path=None): | |
| """Find if 'executable' can be run. Looks for it in 'path' | |
| (string that lists directories separated by 'os.pathsep'; | |
| defaults to os.environ['PATH']). Checks for all executable | |
| extensions. Returns full path or None if no command is found. | |
| """ | |
| if path is None: | |
| path = os.environ['PATH'] | |
| paths = path.split(os.pathsep) | |
| extlist = [''] | |
| if os.name == 'os2': | |
| (base, ext) = os.path.splitext(executable) | |
| # executable files on OS/2 can have an arbitrary extension, but | |
| # .exe is automatically appended if no dot is present in the name | |
| if not ext: | |
| executable = executable + ".exe" | |
| elif sys.platform == 'win32': | |
| pathext = os.environ['PATHEXT'].lower().split(os.pathsep) | |
| (base, ext) = os.path.splitext(executable) | |
| if ext.lower() not in pathext: | |
| extlist = pathext | |
| for ext in extlist: | |
| execname = executable + ext | |
| if os.path.isfile(execname): | |
| return execname | |
| else: | |
| for p in paths: | |
| f = os.path.join(p, execname) | |
| if os.path.isfile(f): | |
| return f | |
| else: | |
| return None | |
| # print find_executable('hg') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment