| | |
| | """ |
| | Utilities for working with external processes. |
| | """ |
| |
|
| | |
| | |
| |
|
| |
|
| | import os |
| | import shutil |
| | import sys |
| |
|
| | if sys.platform == 'win32': |
| | from ._process_win32 import system, getoutput, arg_split, check_pid |
| | elif sys.platform == 'cli': |
| | from ._process_cli import system, getoutput, arg_split, check_pid |
| | elif sys.platform == "emscripten": |
| | from ._process_emscripten import system, getoutput, arg_split, check_pid |
| | else: |
| | from ._process_posix import system, getoutput, arg_split, check_pid |
| |
|
| | from ._process_common import getoutputerror, get_output_error_code, process_handler |
| |
|
| |
|
| | class FindCmdError(Exception): |
| | pass |
| |
|
| |
|
| | def find_cmd(cmd): |
| | """Find absolute path to executable cmd in a cross platform manner. |
| | |
| | This function tries to determine the full path to a command line program |
| | using `which` on Unix/Linux/OS X and `win32api` on Windows. Most of the |
| | time it will use the version that is first on the users `PATH`. |
| | |
| | Warning, don't use this to find IPython command line programs as there |
| | is a risk you will find the wrong one. Instead find those using the |
| | following code and looking for the application itself:: |
| | |
| | import sys |
| | argv = [sys.executable, '-m', 'IPython'] |
| | |
| | Parameters |
| | ---------- |
| | cmd : str |
| | The command line program to look for. |
| | """ |
| | path = shutil.which(cmd) |
| | if path is None: |
| | raise FindCmdError('command could not be found: %s' % cmd) |
| | return path |
| |
|
| |
|
| | def abbrev_cwd(): |
| | """ Return abbreviated version of cwd, e.g. d:mydir """ |
| | cwd = os.getcwd().replace('\\','/') |
| | drivepart = '' |
| | tail = cwd |
| | if sys.platform == 'win32': |
| | if len(cwd) < 4: |
| | return cwd |
| | drivepart,tail = os.path.splitdrive(cwd) |
| |
|
| |
|
| | parts = tail.split('/') |
| | if len(parts) > 2: |
| | tail = '/'.join(parts[-2:]) |
| |
|
| | return (drivepart + ( |
| | cwd == '/' and '/' or tail)) |
| |
|