summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/lib/libshutil.tex16
-rw-r--r--Lib/shutil.py3
2 files changed, 14 insertions, 5 deletions
diff --git a/Doc/lib/libshutil.tex b/Doc/lib/libshutil.tex
index 5dd1b6c..a217150 100644
--- a/Doc/lib/libshutil.tex
+++ b/Doc/lib/libshutil.tex
@@ -67,8 +67,10 @@ file type and creator codes will not be correct.
\begin{funcdesc}{copytree}{src, dst\optional{, symlinks}}
Recursively copy an entire directory tree rooted at \var{src}. The
destination directory, named by \var{dst}, must not already exist;
- it will be created. Individual files are copied using
- \function{copy2()}. If \var{symlinks} is true, symbolic links in
+ it will be created as well as missing parent directories.
+ Permissions and times of directories are copied with \function{copystat()},
+ individual files are copied using \function{copy2()}.
+ If \var{symlinks} is true, symbolic links in
the source tree are represented as symbolic links in the new tree;
if false or omitted, the contents of the linked files are copied to
the new tree. If exception(s) occur, an Error is raised
@@ -76,8 +78,14 @@ file type and creator codes will not be correct.
The source code for this should be considered an example rather than
a tool.
-\versionchanged[Error is raised if any exceptions occur during copying,
-rather than printing a message]{2.3}
+
+ \versionchanged[Error is raised if any exceptions occur during copying,
+ rather than printing a message]{2.3}
+
+ \versionchanged[Create intermediate directories needed to create \var{dst},
+ rather than raising an error. Copy permissions and times of directories using
+ \function{copystat()}]{2.5}
+
\end{funcdesc}
\begin{funcdesc}{rmtree}{path\optional{, ignore_errors\optional{, onerror}}}
diff --git a/Lib/shutil.py b/Lib/shutil.py
index 5bc4377..d6e7d18 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -108,7 +108,8 @@ def copytree(src, dst, symlinks=False):
"""
names = os.listdir(src)
- os.mkdir(dst)
+ os.makedirs(dst)
+ copystat(src, dst)
errors = []
for name in names:
srcname = os.path.join(src, name)