os.path — Common pathname manipulations¶
Source code: Lib/genericpath.py, Lib/posixpath.py (for POSIX) and Lib/ntpath.py (for Windows).
This module implements some useful functions on pathnames. To read or write
files see open(), and for accessing the filesystem see the os
module. The path parameters can be passed as strings, or bytes, or any object
implementing the os.PathLike protocol.
Unlike a Unix shell, Python does not do any automatic path expansions.
Functions such as expanduser() and expandvars() can be invoked
explicitly when an application desires shell-like path expansion. (See also
the glob module.)
See also
The pathlib module offers high-level path objects.
Note
All of these functions accept either only bytes or only string objects as their parameters. The result is an object of the same type, if a path or file name is returned.
Note
Since different operating systems have different path name conventions, there
are several versions of this module in the standard library. The
os.path module is always the path module suitable for the operating
system Python is running on, and therefore usable for local paths. However,
you can also import and use the individual modules if you want to manipulate
a path that is always in one of the different formats. They all have the
same interface:
posixpathfor UNIX-style pathsntpathfor Windows paths
Changed in version 3.8: exists(), lexists(), isdir(), isfile(),
islink(), and ismount() now return False instead of
raising an exception for paths that contain characters or bytes
unrepresentable at the OS level.
- os.path.abspath(path)¶
Return a normalized absolutized version of the pathname path. On most platforms, this is equivalent to calling
normpath(join(os.getcwd(), path)).On Windows the path is normalized by the operating system, therefore the result can differ from
normpath(join(os.getcwd(), path)). A drive-relative path is resolved against the current directory of the specified drive, and the drive letter is capitalized. Trailing dots and spaces are stripped. For example:>>> os.path.abspath('c:spam') 'C:\\Temp\\spam' >>> os.path.abspath('c:/temp/spam. . .') 'c:\\temp\\spam'
See also
Changed in version 3.6: Accepts a path-like object.
- os.path.basename(path, /)¶
Return the base name of pathname path. This is the second element of the pair returned by passing path to the function
split(). Note that the result of this function is different from the Unix basename program; where basename for'/foo/bar/'returns'bar', thebasename()function returns an empty string ('').Changed in version 3.6: Accepts a path-like object.
- os.path.commonpath(paths)¶
Return the longest common sub-path of each pathname in the iterable paths. Raise
ValueErrorif paths contain both absolute and relative pathnames, if paths are on different drives, or if paths is empty. Unlikecommonprefix(), this returns a valid path.Added in version 3.5.
Changed in version 3.6: Accepts a sequence of path-like objects.
Changed in version 3.13: Any iterable can now be passed, rather than just sequences.
- os.path.commonprefix(list, /)¶
Return the longest string prefix (taken character-by-character) that is a prefix of all strings in list. If list is empty, return the empty string (
'').Warning
This function may return invalid paths because it works a character at a time. If you need a common path prefix, then the algorithm implemented in this function is not secure. Use
commonpath()for finding a common path prefix.>>> os.path.commonprefix(['/usr/lib', '/usr/local/lib']) '/usr/l' >>> os.path.commonpath(['/usr/lib', '/usr/local/lib']) '/usr'