15.1. os
— Miscellaneous operating system interfaces¶
This module provides a portable way of using operating system dependent
functionality. If you just want to read or write a file see open()
, if
you want to manipulate paths, see the os.path
module, and if you want to
read all the lines in all the files on the command line see the fileinput
module. For creating temporary files and directories see the tempfile
module, and for high-level file and directory handling see the shutil
module.
Notes on the availability of these functions:
- The design of all built-in operating system dependent modules of Python is
such that as long as the same functionality is available, it uses the same
interface; for example, the function
os.stat(path)
returns stat information about path in the same format (which happens to have originated with the POSIX interface). - Extensions peculiar to a particular operating system are also available
through the
os
module, but using them is of course a threat to portability. - All functions accepting path or file names accept both bytes and string objects, and result in an object of the same type, if a path or file name is returned.
Note
If not separately noted, all functions that claim “Availability: Unix” are supported on Mac OS X, which builds on a Unix core.
- An “Availability: Unix” note means that this function is commonly found on Unix systems. It does not make any claims about its existence on a specific operating system.
- If not separately noted, all functions that claim “Availability: Unix” are supported on Mac OS X, which builds on a Unix core.
Note
All functions in this module raise OSError
in the case of invalid or
inaccessible file names and paths, or other arguments that have the correct
type, but are not accepted by the operating system.
-
os.
name
¶ The name of the operating system dependent module imported. The following names have currently been registered:
'posix'
,'nt'
,'mac'
,'os2'
,'ce'
,'java'
.See also
sys.platform
has a finer granularity.os.uname()
gives system-dependent version information.The
platform
module provides detailed checks for the system’s identity.
15.1.1. File Names, Command Line Arguments, and Environment Variables¶
In Python, file names, command line arguments, and environment variables are
represented using the string type. On some systems, decoding these strings to
and from bytes is necessary before passing them to the operating system. Python
uses the file system encoding to perform this conversion (see
sys.getfilesystemencoding()
).
Changed in version 3.1:
Changed in version 3.1: On some systems, conversion using the file system encoding may fail. In this
case, Python uses the surrogateescape
encoding error handler, which means
that undecodable bytes are replaced by a Unicode character U+DCxx on
decoding, and these are again translated to the original byte on encoding.
The file system encoding must guarantee to successfully decode all bytes below 128. If the file system encoding fails to provide this guarantee, API functions may raise UnicodeErrors.
15.1.2. Process Parameters¶
These functions and data items provide information and operate on the current process and user.
-
os.
environ
¶ A mapping object representing the string environment. For example,
environ['HOME']
is the pathname of your home directory (on some platforms), and is equivalent togetenv("HOME")
in C.This mapping is captured the first time the
os
module is imported, typically during Python startup as part of processingsite.py
. Changes to the environment made after this time are not reflected inos.environ
, except for changes made by modifyingos.environ
directly.If the platform supports the
putenv()
function, this mapping may be used to modify the environment as well as query the environment.putenv()
will be called automatically when the mapping is modified.On Unix, keys and values use
sys.getfilesystemencoding()
and'surrogateescape'
error handler. Useenvironb
if you would like to use a different encoding.Note
Calling
putenv()
directly does not changeos.environ
, so it’s better to modifyos.environ
.Note
On some platforms, including FreeBSD and Mac OS X, setting
environ
may cause memory leaks. Refer to the system documentation forputenv()
.If
putenv()
is not provided, a modified copy of this mapping may be passed to the appropriate process-creation functions to cause child processes to use a modified environment.If the platform supports the
unsetenv()
function, you can delete items in this mapping to unset environment variables.unsetenv()
will be called automatically when an item is deleted fromos.environ
, and when one of thepop()
orclear()
methods is called.
-
os.
chdir
(path) -
os.
fchdir
(fd) -
os.
getcwd
() These functions are described in Files and Directories.
-
os.
fsencode
(filename)¶ Encode filename to the filesystem encoding with
'surrogateescape'
error handler, or'strict'
on Windows; returnbytes
unchanged.fsdecode()
is the reverse function.New in version 3.2:
New in version 3.2.
-
os.
fsdecode
(filename)¶ Decode filename from the filesystem encoding with
'surrogateescape'
error handler, or'strict'
on Windows; returnstr
unchanged.fsencode()
is the reverse function.New in version 3.2:
New in version 3.2.
-
os.
get_exec_path
(env=None)¶ Returns the list of directories that will be searched for a named executable, similar to a shell, when launching a process. env, when specified, should be an environment variable dictionary to lookup the PATH in. By default, when env is None,
environ
is used.New in version 3.2:
New in version 3.2.
-
os.
ctermid
()¶ Return the filename corresponding to the controlling terminal of the process.
Availability: Unix.
-
os.
getegid
()¶ Return the effective group id of the current process. This corresponds to the “set id” bit on the file being executed in the current process.
Availability: Unix.
-
os.
geteuid
()¶ Return the current process’s effective user id.
Availability: Unix.
-
os.
getgid
()¶ Return the real group id of the current process.
Availability: Unix.
-
os.
getgroups
()¶ Return list of supplemental group ids associated with the current process.
Availability: Unix.
-
os.
initgroups
(username, gid)¶ Call the system initgroups() to initialize the group access list with all of the groups of which the specified username is a member, plus the specified group id.
Availability: Unix.
New in version 3.2:
New in version 3.2.
-
os.
getlogin
()¶ Return the name of the user logged in on the controlling terminal of the process. For most purposes, it is more useful to use the environment variables
LOGNAME
orUSERNAME
to find out who the user is, orpwd.getpwuid(os.getuid())[0]
to get the login name of the currently effective user id.Availability: Unix, Windows.
-
os.
getpgid
(pid)¶ Return the process group id of the process with process id pid. If pid is 0, the process group id of the current process is returned.
Availability: Unix.
-
os.
getpgrp
()¶ Return the id of the current process group.
Availability: Unix.
-
os.
getpid
()¶ Return the current process id.
Availability: Unix, Windows.
-
os.
getppid
()¶ Return the parent’s process id. When the parent process has exited, on Unix the id returned is the one of the init process (1), on Windows it is still the same id, which may be already reused by another process.
Availability: Unix, Windows
Changed in version 3.2:
Changed in version 3.2: Added support for Windows.