Skip to content

Commit 53455a3

Browse files
authored
gh-100783: fix os.path.join documentation (#100811)
- Use "drive", not "drive letter", because of UNC paths - Previous components are not thrown away from relative drive letters - Use "segment" instead of "component" for consistency with pathlib - Other miscellaneous improvements
1 parent 909982e commit 53455a3

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

Doc/library/os.path.rst

+12-11
Original file line numberDiff line numberDiff line change
@@ -306,17 +306,18 @@ the :mod:`glob` module.)
306306

307307
.. function:: join(path, *paths)
308308

309-
Join one or more path components intelligently. The return value is the
310-
concatenation of *path* and any members of *\*paths* with exactly one
311-
directory separator following each non-empty part except the last, meaning
312-
that the result will only end in a separator if the last part is empty. If
313-
a component is an absolute path, all previous components are thrown away
314-
and joining continues from the absolute path component.
315-
316-
On Windows, the drive letter is not reset when an absolute path component
317-
(e.g., ``r'\foo'``) is encountered. If a component contains a drive
318-
letter, all previous components are thrown away and the drive letter is
319-
reset. Note that since there is a current directory for each drive,
309+
Join one or more path segments intelligently. The return value is the
310+
concatenation of *path* and all members of *\*paths*, with exactly one
311+
directory separator following each non-empty part except the last. That is,
312+
if the last part is empty, the result will end in a separator. If
313+
a segment is an absolute path (which on Windows requires both a drive and a
314+
root), then all previous segments are ignored and joining continues from the
315+
absolute path segment.
316+
317+
On Windows, the drive is not reset when a rooted path segment (e.g.,
318+
``r'\foo'``) is encountered. If a segment is on a different drive or is an
319+
absolute path, all previous segments are ignored and the drive is reset. Note
320+
that since there is a current directory for each drive,
320321
``os.path.join("c:", "foo")`` represents a path relative to the current
321322
directory on drive :file:`C:` (:file:`c:foo`), not :file:`c:\\foo`.
322323

0 commit comments

Comments
 (0)