process.py
71 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2498 | # encoding: utf-8 | ||
""" | ||||
Utilities for working with external processes. | ||||
""" | ||||
Min RK
|
r21122 | # Copyright (c) IPython Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||||
Brian Granger
|
r2498 | |||
import os | ||||
Hugo
|
r24010 | import shutil | ||
Brian Granger
|
r2498 | import sys | ||
Fernando Perez
|
r2908 | if sys.platform == 'win32': | ||
Min RK
|
r21122 | from ._process_win32 import system, getoutput, arg_split, check_pid | ||
Doug Blank
|
r15154 | elif sys.platform == 'cli': | ||
Min RK
|
r21122 | from ._process_cli import system, getoutput, arg_split, check_pid | ||
Hood Chatham
|
r28611 | elif sys.platform == "emscripten": | ||
from ._process_emscripten import system, getoutput, arg_split, check_pid | ||||
Fernando Perez
|
r2908 | else: | ||
Min RK
|
r21122 | from ._process_posix import system, getoutput, arg_split, check_pid | ||
Jörgen Stenarson
|
r5517 | |||
Paul Ivanov
|
r14184 | from ._process_common import getoutputerror, get_output_error_code, process_handler | ||
Brian Granger
|
r2498 | |||
class FindCmdError(Exception): | ||||
pass | ||||
def find_cmd(cmd): | ||||
"""Find absolute path to executable cmd in a cross platform manner. | ||||
Bernardo B. Marques
|
r4872 | |||
Brian Granger
|
r2498 | 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 | ||||
MinRK
|
r10696 | time it will use the version that is first on the users `PATH`. | ||
Brian Granger
|
r2498 | |||
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:: | ||||
Bernardo B. Marques
|
r4872 | |||
anantkaushik89
|
r22809 | import sys | ||
kaushikanant
|
r22832 | argv = [sys.executable, '-m', 'IPython'] | ||
anantkaushik89
|
r22787 | |||
Brian Granger
|
r2498 | Parameters | ||
---------- | ||||
cmd : str | ||||
The command line program to look for. | ||||
""" | ||||
Hugo
|
r24010 | path = shutil.which(cmd) | ||
Min RK
|
r21122 | if path is None: | ||
Brian Granger
|
r2498 | raise FindCmdError('command could not be found: %s' % cmd) | ||
Min RK
|
r21122 | return path | ||
Brian Granger
|
r2498 | |||
def abbrev_cwd(): | ||||
""" Return abbreviated version of cwd, e.g. d:mydir """ | ||||
Srinivas Reddy Thatiparthy
|
r23045 | cwd = os.getcwd().replace('\\','/') | ||
Brian Granger
|
r2498 | 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)) | ||||