From cc39b19ee2d84ef7c22f976a2f9e3eae44e749ef Mon Sep 17 00:00:00 2001 From: okuxxo Date: Fri, 22 Sep 2023 17:33:06 +0800 Subject: [PATCH] Add switch parameter "copy_stat" to shutil.copytree() --- Lib/shutil.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Lib/shutil.py b/Lib/shutil.py index b37bd082eee0c6..85208c9168bf18 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -477,7 +477,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: @@ -533,7 +533,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: @@ -543,7 +544,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. @@ -588,7 +589,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(path):