6.1 Standard Module os

This module provides a more portable way of using operating system (OS) dependent functionality than importing an OS dependent built-in module like posix.

When the optional built-in module posix is available, this module exports the same functions and data as posix; otherwise, it searches for an OS dependent built-in module like mac and exports the same functions and data as found there. The design of all Python's built-in OS dependent modules is such that as long as the same functionality is available, it uses the same interface; e.g., the function os.stat(file) returns stat info about file in a format compatible with the POSIX interface.

Extensions peculiar to a particular OS are also available through the os module, but using them is of course a threat to portability!

Note that after the first time os is imported, there is no performance penalty in using functions from os instead of directly from the OS dependent built-in module, so there should be no reason not to use os!

In addition to whatever the correct OS dependent module exports, the following variables and functions are always exported by os:

name
The name of the OS dependent module imported. The following names have currently been registered: 'posix', 'nt', 'dos', 'mac'.

path
The corresponding OS dependent standard module for pathname operations, e.g., posixpath or macpath. Thus, (given the proper imports), os.path.split(file) is equivalent to but more portable than posixpath.split(file).

curdir
The constant string used by the OS to refer to the current directory, e.g. '.' for POSIX or ':' for the Macintosh.

pardir
The constant string used by the OS to refer to the parent directory, e.g. '..' for POSIX or '::' for the Macintosh.

sep
The character used by the OS to separate pathname components, e.g. '/' for POSIX or ':' for the Macintosh. Note that knowing this is not sufficient to be able to parse or concatenate pathnames -- better use os.path.split() and os.path.join()--but it is occasionally useful.

altsep
An alternative character used by the OS to separate pathname components, or None if only one separator character exists. This is set to '/' on DOS/Windows systems where sep is a backslash.

pathsep
The character conventionally used by the OS to separate search patch components (as in $PATH), e.g. ':' for POSIX or ';' for MS-DOS.

linesep
The string used to separate (or, rather, terminate) lines on the current platform. This may be a single character, e.g. '\n' for POSIX or '\r' for MacOS, or multiple characters, e.g. '\r\n' for MS-DOS.

defpath
The default search path used by exec*p*() if the environment doesn't have a 'PATH' key.

makedirs (path[, mode])
New in version 1.5.2.

Recursive directory creation function. Like mkdir(), but makes all intermediate-level directories needed to contain the leaf directory. Throws an os.error exception if the leaf directory already exists or cannot be created. The default mode is 0777 (octal).

removedirs (path)
New in version 1.5.2.

Recursive directory removal function. Works like rmdir() except that, if the leaf directory is successfully removed, directories corresponding to rightmost path segments will be pruned way until either the whole path is consumed or an error is raised (which is ignored, because it generally means that a parent directory is not empty). Throws an os.error exception if the leaf directory could not be successfully removed.

renames (path)
New in version 1.5.2.

Recursive directory or file renaming function. Works like rename(), except creation of any intermediate directories needed to make the new pathname good is attempted first. After the rename, directories corresponding to rightmost path segments of the old name will be pruned away using removedirs().

Note: this function can fail with the new directory structure made if you lack permissions needed to remove the leaf directory or file.

execl (path, arg0, arg1, ...)
This is equivalent to execv(path, (arg0, arg1, ...)).

execle (path, arg0, arg1, ..., env)
This is equivalent to execve(path, (arg0, arg1, ...), env).

execlp (path, arg0, arg1, ...)
This is equivalent to execvp(path, (arg0, arg1, ...)).

execvp (path, args)
This is like execv(path, args) but duplicates the shell's actions in searching for an executable file in a list of directories. The directory list is obtained from environ['PATH'].

execvpe (path, args, env)
This is a cross between execve() and execvp(). The directory list is obtained from env['PATH'].

(The functions execv() and execve() are not documented here, since they are implemented by the OS dependent module. If the OS dependent module doesn't define either of these, the functions that rely on it will raise an exception. They are documented in the section on module posix, together with all other functions that os imports from the OS dependent module.)