Issue #15414: Clean and correct the os.path.join docs.

In particular, correctly describe the behavior of ntpath.join.

Based on a patch by Dave Sawyer.
This commit is contained in:
Zachary Ware 2014-10-10 16:03:14 -05:00
parent 64138c438c
commit a13dab47cb
1 changed files with 15 additions and 10 deletions

View File

@ -206,17 +206,22 @@ the :mod:`glob` module.)
Support for detecting non-root mount points on Windows. Support for detecting non-root mount points on Windows.
.. function:: join(path1[, path2[, ...]]) .. function:: join(path, *paths)
Join one or more path components intelligently. If any component is an absolute Join one or more path components intelligently. The return value is the
path, all previous components (on Windows, including the previous drive letter, concatenation of *path* and any members of *\*paths* with exactly one
if there was one) are thrown away, and joining continues. The return value is directory separator (``os.sep``) following each non-empty part except the
the concatenation of *path1*, and optionally *path2*, etc., with exactly one last, meaning that the result will only end in a separator if the last
directory separator (``os.sep``) following each non-empty part except the last. part is empty. If a component is an absolute path, all previous
(This means that an empty last part will result in a path that ends with a components are thrown away and joining continues from the absolute path
separator.) Note that on Windows, since there is a current directory for component.
each drive, ``os.path.join("c:", "foo")`` represents a path relative to the
current directory on drive :file:`C:` (:file:`c:foo`), not :file:`c:\\foo`. On Windows, the drive letter is not reset when an absolute path component
(e.g., ``r'\foo'``) is encountered. If a component contains a drive
letter, all previous components are thrown away and the drive letter is
reset. Note that since there is a current directory for each drive,
``os.path.join("c:", "foo")`` represents a path relative to the current
directory on drive :file:`C:` (:file:`c:foo`), not :file:`c:\\foo`.
.. function:: normcase(path) .. function:: normcase(path)