diff --git a/Lib/shutil.py b/Lib/shutil.py index d6d7806802bd17..7ef26a250b7168 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -559,7 +559,7 @@ def _ignore_patterns(path, names): return _ignore_patterns def _copytree(entries, src, dst, symlinks, ignore, copy_function, - ignore_dangling_symlinks, dirs_exist_ok=False): + ignore_dangling_symlinks, dirs_exist_ok=False, copy_stat=True): if ignore is not None: ignored_names = ignore(os.fspath(src), [x.name for x in entries]) else: @@ -615,7 +615,8 @@ def _copytree(entries, src, dst, symlinks, ignore, copy_function, except OSError as why: errors.append((srcname, dstname, str(why))) try: - copystat(src, dst) + if copy_stat == True : + copystat(src, dst) except OSError as why: # Copying file access times may fail on Windows if getattr(why, 'winerror', None) is None: @@ -625,7 +626,7 @@ def _copytree(entries, src, dst, symlinks, ignore, copy_function, return dst def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, - ignore_dangling_symlinks=False, dirs_exist_ok=False): + ignore_dangling_symlinks=False, dirs_exist_ok=False, copy_stat=True): """Recursively copy a directory tree and return the destination directory. If exception(s) occur, an Error is raised with a list of reasons. @@ -670,7 +671,7 @@ def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks, ignore=ignore, copy_function=copy_function, ignore_dangling_symlinks=ignore_dangling_symlinks, - dirs_exist_ok=dirs_exist_ok) + dirs_exist_ok=dirs_exist_ok, copy_stat=copy_stat) if hasattr(os.stat_result, 'st_file_attributes'): def _rmtree_islink(st):