Minimal example:
import os
import shutil
from distutils import dir_util
shutil.rmtree('folder1')
os.makedirs('folder1/folder2/folder3/')
with open('folder1/folder2/folder3/data.txt', 'w') as fp:
fp.write('hello')
print(os.path.exists('folder1/new_folder2')) # -> prints false
dir_util.copy_tree('folder1/folder2', 'folder1/new_folder2') # -> works
shutil.rmtree('folder1/new_folder2')
print(os.path.exists('folder1/new_folder2')) # -> prints false
dir_util.copy_tree('folder1/folder2', 'folder1/new_folder2') # -> crashes
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
/opt/conda/lib/python3.7/distutils/file_util.py in _copy_file_contents(src, dst, buffer_size)
40 try:
---> 41 fdst = open(dst, 'wb')
42 except OSError as e:
FileNotFoundError: [Errno 2] No such file or directory: 'folder1/new_folder2/folder3/data.txt'
dir_util caches folders it previously created in a static global variable _path_created which is a bad idea:
https://github.com/python/cpython/blob/master/Lib/distutils/dir_util.py
|