Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
60eba57f
Commit
60eba57f
authored
Sep 21, 2012
by
Larry Hastings
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup/rewrite shutil docs regarding follow_symlinks and copying attributes.
parent
dc07bac2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
84 additions
and
31 deletions
+84
-31
Doc/library/shutil.rst
Doc/library/shutil.rst
+84
-31
No files found.
Doc/library/shutil.rst
View file @
60eba57f
...
...
@@ -50,14 +50,15 @@ Directory and files operations
.. function:: copyfile(src, dst, *, follow_symlinks=True)
Copy the contents (no metadata) of the file named *src* to a file named
*dst* and return *dst*. *dst* must be the complete target file name; look at
:func:`shutil.copy` for a copy that accepts a target directory path. If
*src* and *dst* are the same files, :exc:`Error` is raised.
*dst* and return *dst*. *src* and *dst* are path names given as strings.
*dst* must be the complete target file name; look at :func:`shutil.copy`
for a copy that accepts a target directory path. If *src* and *dst*
specify the same file, :exc:`Error` is raised.
The destination location must be writable; otherwise,
an :exc:`OSError` exception
will be raised. If *dst* already exists, it will be replaced. Special files
such as character or block devices and pipes cannot be copied with this
function. *src* and *dst* are path names given as strings
.
The destination location must be writable; otherwise,
an :exc:`OSError`
exception will be raised. If *dst* already exists, it will be replaced.
Special files such as character or block devices and pipes cannot be
copied with this function
.
If *follow_symlinks* is false and *src* is a symbolic link,
a new symbolic link will be created instead of copying the
...
...
@@ -71,52 +72,104 @@ Directory and files operations
.. function:: copymode(src, dst, *, follow_symlinks=True)
Copy the permission bits from *src* to *dst*. The file contents, owner, and
group are unaffected. *src* and *dst* are path names given as strings. If
*follow_symlinks* is false, *src* is a symbolic link, and the operating
system supports modes for symbolic links (for example BSD-based ones),
the mode of the link will be copied.
group are unaffected. *src* and *dst* are path names given as strings.
If *follow_symlinks* is false, and both *src* and *dst* are symbolic links,
:func:`copymode` will attempt to modify the mode of *dst* itself (rather
than the file it points to). This functionality is not available on every
platform; please see :func:`copystat` for more information. If
:func:`copymode` cannot modify symbolic links on the local platform, and it
is asked to do so, it will do nothing and return.
.. versionchanged:: 3.3
Added *follow_symlinks* argument.
.. function:: copystat(src, dst, *, follow_symlinks=True)
Copy the permission bits, last access time, last modification time, and flags
from *src* to *dst*. The file contents, owner, and group are unaffected. *src*
and *dst* are path names given as strings. If *follow_symlinks* is false, and
*src* and *dst* are both symbolic links, the stats of the link will be copied as
far as the platform allows. On Linux, :func:`copystat` also copies the
"extended attributes" where possible.
Copy the permission bits, last access time, last modification time, and
flags from *src* to *dst*. On Linux, :func:`copystat` also copies the
"extended attributes" where possible. The file contents, owner, and
group are unaffected. *src* and *dst* are path names given as strings.
If *follow_symlinks* is false, and *src* and *dst* both
refer to symbolic links, :func:`copystat` will operate on
the symbolic links themselves rather than the files the
symbolic links refer to--reading the information from the
*src* symbolic link, and writing the information to the
*dst* symbolic link.
.. note::
Not all platforms provide the ability to examine and
modify symbolic links. Python itself can tell you what
functionality is locally available.
* If ``os.chmod in os.supports_follow_symlinks`` is
``True``, :func:`copystat` can modify the permission
bits of a symbolic link.
* If ``os.utime in os.supports_follow_symlinks`` is
``True``, :func:`copystat` can modify the last access
and modification times of a symbolic link.
* If ``os.chflags in os.supports_follow_symlinks`` is
``True``, :func:`copystat` can modify the flags of
a symbolic link. (``os.chflags`` is not available on
all platforms.)
On platforms where some or all of this functionality
is unavailable, when asked to modify a symbolic link,
:func:`copystat` will copy everything it can.
:func:`copystat` never returns failure.
Please see :data:`os.supports_follow_symlinks`
for more information.
.. versionchanged:: 3.3
Added *follow_symlinks* argument and support for Linux extended attributes.
.. function:: copy(src, dst, *, follow_symlinks=True)
Copy the file *src* to the file or directory *dst* and return the file's
destination. If *dst* is a directory, a
file with the same basename as *src* is created (or overwritten) in the
directory specified. Permission bits are copied. *src* and *dst* are path
names given as strings. If *follow_symlinks* is false, symbolic
links won't be followed but recreated instead -- this resembles GNU's
:program:`cp -P`.
Copies the file *src* to the file or directory *dst*. *src* and *dst*
should be strings. If *dst* specifies a directory, the file will be
copied into *dst* using the base filename from *src*. Returns the
path to the newly created file.
If *follow_symlinks* is false, and *src* is a symbolic link,
*dst* will be created as a symbolic link. If *follow_symlinks*
is true and *src* is a symbolic link, *dst* will be a copy of
the file *src* refers to.
:func:`copy` copies the file data and the file's permission
mode (see :func:`os.chmod`). Other metadata, like the
file's creation and modification times, is not preserved.
To preserve all file metadata from the original, use
:func:`~shutil.copy2` instead.
.. versionchanged:: 3.3
Added *follow_symlinks* argument.
Now returns
*dst*
.
Now returns
path to the newly created file
.
.. function:: copy2(src, dst, *, follow_symlinks=True)
Similar to :func:`shutil.copy`, including that the destination is
returned, but metadata is copied as well. This is similar to the Unix
command :program:`cp -p`. If *follow_symlinks* is false,
symbolic links won't be followed but recreated instead -- this resembles
GNU's :program:`cp -P`.
Identical to :func:`~shutil.copy` except that :func:`copy2`
also attempts to preserve all file metadata.
When *follow_symlinks* is false, and *src* is a symbolic
link, :func:`copy2` attempts to copy all metadata from the
*src* symbolic link to the newly-created *dst* symbolic link.
However, this functionality is not available on all platforms.
On platforms where some or all of this functionality is
unavailable, :func:`copy2` will preserve all the metadata
it can; :func:`copy2` never returns failure.
:func:`copy2` uses :func:`copystat` to copy the file metadata.
Please see :func:`copystat` for more information
about platform support for modifying symbolic link metadata.
.. versionchanged:: 3.3
Added *follow_symlinks* argument, try to copy extended
file system attributes too (currently Linux only).
Now returns
*dst*
.
Now returns
path to the newly created file
.
.. function:: ignore_patterns(\*patterns)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment