summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-06-13 18:17:57 (GMT)
committerGitHub <noreply@github.com>2024-06-13 18:17:57 (GMT)
commite0f4dd8ec5d26c2c59893ebe476090892cbfe233 (patch)
treeee92a93e7973d8e570392fce80a7f278a767c43d /Doc
parent5ce72e211f5122bf52ced71433070db84997ab7c (diff)
downloadcpython-e0f4dd8ec5d26c2c59893ebe476090892cbfe233.zip
cpython-e0f4dd8ec5d26c2c59893ebe476090892cbfe233.tar.gz
cpython-e0f4dd8ec5d26c2c59893ebe476090892cbfe233.tar.bz2
[3.13] GH-119054: Add "Creating files and directories" section to pathlib docs. (GH-120186) (#120462)
GH-119054: Add "Creating files and directories" section to pathlib docs. (GH-120186) Add dedicated subsection for `pathlib.Path.touch()`, `mkdir()`, `symlink_to()` and `hardlink_to()`. Also note that `open()`, `write_text()` and `write_bytes()` are often used to create files. (cherry picked from commit c2d810b6d4deeea530648a8d0983e3a2adf6c942) Co-authored-by: Barney Gale <barney.gale@gmail.com> Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/pathlib.rst165
1 files changed, 86 insertions, 79 deletions
diff --git a/Doc/library/pathlib.rst b/Doc/library/pathlib.rst
index ab109dc..5b38fe2 100644
--- a/Doc/library/pathlib.rst
+++ b/Doc/library/pathlib.rst
@@ -1325,6 +1325,92 @@ Reading directories
.. versionadded:: 3.12
+Creating files and directories
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. method:: Path.touch(mode=0o666, exist_ok=True)
+
+ Create a file at this given path. If *mode* is given, it is combined
+ with the process's ``umask`` value to determine the file mode and access
+ flags. If the file already exists, the function succeeds when *exist_ok*
+ is true (and its modification time is updated to the current time),
+ otherwise :exc:`FileExistsError` is raised.
+
+ .. seealso::
+ The :meth:`~Path.open`, :meth:`~Path.write_text` and
+ :meth:`~Path.write_bytes` methods are often used to create files.
+
+
+.. method:: Path.mkdir(mode=0o777, parents=False, exist_ok=False)
+
+ Create a new directory at this given path. If *mode* is given, it is
+ combined with the process's ``umask`` value to determine the file mode
+ and access flags. If the path already exists, :exc:`FileExistsError`
+ is raised.
+
+ If *parents* is true, any missing parents of this path are created
+ as needed; they are created with the default permissions without taking
+ *mode* into account (mimicking the POSIX ``mkdir -p`` command).
+
+ If *parents* is false (the default), a missing parent raises
+ :exc:`FileNotFoundError`.
+
+ If *exist_ok* is false (the default), :exc:`FileExistsError` is
+ raised if the target directory already exists.
+
+ If *exist_ok* is true, :exc:`FileExistsError` will not be raised unless the given
+ path already exists in the file system and is not a directory (same
+ behavior as the POSIX ``mkdir -p`` command).
+
+ .. versionchanged:: 3.5
+ The *exist_ok* parameter was added.
+
+
+.. method:: Path.symlink_to(target, target_is_directory=False)
+
+ Make this path a symbolic link pointing to *target*.
+
+ On Windows, a symlink represents either a file or a directory, and does not
+ morph to the target dynamically. If the target is present, the type of the
+ symlink will be created to match. Otherwise, the symlink will be created
+ as a directory if *target_is_directory* is true or a file symlink (the
+ default) otherwise. On non-Windows platforms, *target_is_directory* is ignored.
+
+ ::
+
+ >>> p = Path('mylink')
+ >>> p.symlink_to('setup.py')
+ >>> p.resolve()
+ PosixPath('/home/antoine/pathlib/setup.py')
+ >>> p.stat().st_size
+ 956
+ >>> p.lstat().st_size
+ 8
+
+ .. note::
+ The order of arguments (link, target) is the reverse
+ of :func:`os.symlink`'s.
+
+ .. versionchanged:: 3.13
+ Raises :exc:`UnsupportedOperation` if :func:`os.symlink` is not
+ available. In previous versions, :exc:`NotImplementedError` was raised.
+
+
+.. method:: Path.hardlink_to(target)
+
+ Make this path a hard link to the same file as *target*.
+
+ .. note::
+ The order of arguments (link, target) is the reverse
+ of :func:`os.link`'s.
+
+ .. versionadded:: 3.10
+
+ .. versionchanged:: 3.13
+ Raises :exc:`UnsupportedOperation` if :func:`os.link` is not
+ available. In previous versions, :exc:`NotImplementedError` was raised.
+
+
Other methods
^^^^^^^^^^^^^
@@ -1409,31 +1495,6 @@ Other methods
symbolic link's mode is changed rather than its target's.
-.. method:: Path.mkdir(mode=0o777, parents=False, exist_ok=False)
-
- Create a new directory at this given path. If *mode* is given, it is
- combined with the process' ``umask`` value to determine the file mode
- and access flags. If the path already exists, :exc:`FileExistsError`
- is raised.
-
- If *parents* is true, any missing parents of this path are created
- as needed; they are created with the default permissions without taking
- *mode* into account (mimicking the POSIX ``mkdir -p`` command).
-
- If *parents* is false (the default), a missing parent raises
- :exc:`FileNotFoundError`.
-
- If *exist_ok* is false (the default), :exc:`FileExistsError` is
- raised if the target directory already exists.
-
- If *exist_ok* is true, :exc:`FileExistsError` will not be raised unless the given
- path already exists in the file system and is not a directory (same
- behavior as the POSIX ``mkdir -p`` command).
-
- .. versionchanged:: 3.5
- The *exist_ok* parameter was added.
-
-
.. method:: Path.owner(*, follow_symlinks=True)
Return the name of the user owning the file. :exc:`KeyError` is raised
@@ -1555,60 +1616,6 @@ Other methods
Remove this directory. The directory must be empty.
-.. method:: Path.symlink_to(target, target_is_directory=False)
-
- Make this path a symbolic link pointing to *target*.
-
- On Windows, a symlink represents either a file or a directory, and does not
- morph to the target dynamically. If the target is present, the type of the
- symlink will be created to match. Otherwise, the symlink will be created
- as a directory if *target_is_directory* is ``True`` or a file symlink (the
- default) otherwise. On non-Windows platforms, *target_is_directory* is ignored.
-
- ::
-
- >>> p = Path('mylink')
- >>> p.symlink_to('setup.py')
- >>> p.resolve()
- PosixPath('/home/antoine/pathlib/setup.py')
- >>> p.stat().st_size
- 956
- >>> p.lstat().st_size
- 8
-
- .. note::
- The order of arguments (link, target) is the reverse
- of :func:`os.symlink`'s.
-
- .. versionchanged:: 3.13
- Raises :exc:`UnsupportedOperation` if :func:`os.symlink` is not
- available. In previous versions, :exc:`NotImplementedError` was raised.
-
-
-.. method:: Path.hardlink_to(target)
-
- Make this path a hard link to the same file as *target*.
-
- .. note::
- The order of arguments (link, target) is the reverse
- of :func:`os.link`'s.
-
- .. versionadded:: 3.10
-
- .. versionchanged:: 3.13
- Raises :exc:`UnsupportedOperation` if :func:`os.link` is not
- available. In previous versions, :exc:`NotImplementedError` was raised.
-
-
-.. method:: Path.touch(mode=0o666, exist_ok=True)
-
- Create a file at this given path. If *mode* is given, it is combined
- with the process' ``umask`` value to determine the file mode and access
- flags. If the file already exists, the function succeeds if *exist_ok*
- is true (and its modification time is updated to the current time),
- otherwise :exc:`FileExistsError` is raised.
-
-
.. method:: Path.unlink(missing_ok=False)
Remove this file or symbolic link. If the path points to a directory,