module documentation

exec_command

Implements exec_command function that is (almost) equivalent to commands.getstatusoutput function but on NT, DOS systems the returned status is actually correct (though, the returned status values may be different by a factor). In addition, exec_command takes keyword arguments for (re-)defining environment variables.

Provides functions:

exec_command --- execute command in a specified directory and
in the modified environment.
find_executable --- locate a command using info from environment
variable PATH. Equivalent to posix which command.

Author: Pearu Peterson <pearu@cens.ioc.ee> Created: 11 January 2003

Requires: Python 2.x

Successfully tested on:

os.name sys.platform comments
posix linux2 Debian (sid) Linux, Python 2.1.3+, 2.2.3+, 2.3.3 PyCrust 0.9.3, Idle 1.0.2
posix linux2 Red Hat 9 Linux, Python 2.1.3, 2.2.2, 2.3.2
posix sunos5 SunOS 5.9, Python 2.2, 2.3.2
posix darwin Darwin 7.2.0, Python 2.3
nt win32 Windows Me Python 2.3(EE), Idle 1.0, PyCrust 0.7.2 Python 2.1.1 Idle 0.8
nt win32 Windows 98, Python 2.1.1. Idle 0.8
nt win32 Cygwin 98-4.10, Python 2.1.1(MSC) - echo tests fail i.e. redefining environment variables may not work. FIXED: don't use cygwin echo! Comment: also cmd /c echo will not work but redefining environment variables do work.
posix cygwin Cygwin 98-4.10, Python 2.3.3(cygming special)
nt win32 Windows XP, Python 2.3.3

Known bugs:

  • Tests, that send messages to stderr, fail when executed from MSYS prompt because the messages are lost at some point.
Function exec_command Return (status,output) of executed command.
Function filepath_from_subprocess_output Convert bytes in the encoding used by a subprocess into a filesystem-appropriate str.
Function find_executable Return full path of a executable or None.
Function forward_bytes_to_stdout Forward bytes from a subprocess call to the console, without attempting to decode them.
Function get_pythonexe Undocumented
Function temp_file_name Undocumented
Function _exec_command Internal workhorse for exec_command().
Function _preserve_environment Undocumented
Function _quote_arg Quote the argument for safe use in a shell command line.
Function _update_environment Undocumented
def exec_command(command, execute_in='', use_shell=None, use_tee=None, _with_python=1, **env): (source)

Return (status,output) of executed command.

Deprecated since version 1.17: Use subprocess.Popen instead

Notes

On NT, DOS systems the returned status is correct for external commands. Wild cards will not work for non-posix systems or when use_shell=0.

Parameters
command:strA concatenated string of executable and arguments.
execute_in:strBefore running command cd execute_in and after cd -.
use_shell:{bool, None}, optionalIf True, execute sh -c command. Default None (True)
use_tee:{bool, None}, optionalIf True use tee. Default None (True)
_with_pythonUndocumented
**envUndocumented
Returns
strres - Both stdout and stderr messages.
def filepath_from_subprocess_output(output): (source)

Convert bytes in the encoding used by a subprocess into a filesystem-appropriate str.

Inherited from exec_command, and possibly incorrect.

def find_executable(exe, path=None, _cache={}): (source)

Return full path of a executable or None.

Symbolic links are not followed.

def forward_bytes_to_stdout(val): (source)

Forward bytes from a subprocess call to the console, without attempting to decode them.

The assumption is that the subprocess call already returned bytes in a suitable encoding.

def get_pythonexe(): (source)

Undocumented

def temp_file_name(): (source)

Undocumented

def _exec_command(command, use_shell=None, use_tee=None, **env): (source)

Internal workhorse for exec_command().

def _preserve_environment(names): (source)

Undocumented

def _quote_arg(arg): (source)

Quote the argument for safe use in a shell command line.

def _update_environment(**env): (source)

Undocumented