[Python-Dev] [Python-checkins] cpython: Issue #12715: Add an optional symlinks argument to shutil functions (copyfile, (original) (raw)

Brian Curtin brian at python.org
Fri Dec 30 20:29:36 CET 2011


On Thu, Dec 29, 2011 at 11:55, antoine.pitrou <python-checkins at python.org> wrote:

http://hg.python.org/cpython/rev/cf57ef65bcd0 changeset:   74194:cf57ef65bcd0 user:        Antoine Pitrou <solipsis at pitrou.net> date:        Thu Dec 29 18:54:15 2011 +0100 summary:  Issue #12715: Add an optional symlinks argument to shutil functions (copyfile, copymode, copystat, copy, copy2). When that parameter is true, symlinks aren't dereferenced and the operation instead acts on the symlink itself (or creates one, if relevant).

Patch by Hynek Schlawack. files:  Doc/library/shutil.rst  |   46 ++++-  Lib/shutil.py           |  101 +++++++++---  Lib/test/testshutil.py |  219 ++++++++++++++++++++++++++++  Misc/NEWS               |    5 +  4 files changed, 333 insertions(+), 38 deletions(-)

diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -45,7 +45,7 @@  be copied. -.. function:: copyfile(src, dst) +.. function:: copyfile(src, dst[, symlinks=False])  Copy the contents (no metadata) of the file named src to a file named dst.  dst must be the complete target file name; look at :func:copy for a copy that @@ -56,37 +56,56 @@  such as character or block devices and pipes cannot be copied with this  function.  src and dst are path names given as strings. +   If symlinks is true and src is a symbolic link, a new symbolic link will +   be created instead of copying the file src points to. +  .. versionchanged:: 3.3 :exc:IOError used to be raised instead of :exc:OSError. +      Added symlinks argument.

Can we expect that readers on Windows know how os.symlink works, or should the stipulations of os.symlink usage also be laid out or at least linked to from there?

Basically, almost everyone is going to get an OSError if they call this on Windows. You have to be on Windows Vista or beyond and the calling process has to have the proper privileges (typically gained through elevation - "Run as Administrator").



More information about the Python-Dev mailing list