OLD | NEW |
| (Empty) |
1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories. | |
2 # See LICENSE for details. | |
3 | |
4 """ | |
5 Utilities for dealing with processes. | |
6 """ | |
7 | |
8 import os | |
9 | |
10 def which(name, flags=os.X_OK): | |
11 """Search PATH for executable files with the given name. | |
12 | |
13 On newer versions of MS-Windows, the PATHEXT environment variable will be | |
14 set to the list of file extensions for files considered executable. This | |
15 will normally include things like ".EXE". This fuction will also find files | |
16 with the given name ending with any of these extensions. | |
17 | |
18 On MS-Windows the only flag that has any meaning is os.F_OK. Any other | |
19 flags will be ignored. | |
20 | |
21 @type name: C{str} | |
22 @param name: The name for which to search. | |
23 | |
24 @type flags: C{int} | |
25 @param flags: Arguments to L{os.access}. | |
26 | |
27 @rtype: C{list} | |
28 @param: A list of the full paths to files found, in the | |
29 order in which they were found. | |
30 """ | |
31 result = [] | |
32 exts = filter(None, os.environ.get('PATHEXT', '').split(os.pathsep)) | |
33 path = os.environ.get('PATH', None) | |
34 if path is None: | |
35 return [] | |
36 for p in os.environ.get('PATH', '').split(os.pathsep): | |
37 p = os.path.join(p, name) | |
38 if os.access(p, flags): | |
39 result.append(p) | |
40 for e in exts: | |
41 pext = p + e | |
42 if os.access(pext, flags): | |
43 result.append(pext) | |
44 return result | |
45 | |
OLD | NEW |