New submission from Aleksey Vlasenko <vlasenkoale...@gmail.com>:
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 ---------- components: Distutils messages: 382782 nosy: dstufft, eric.araujo, vlasenkoalexey priority: normal severity: normal status: open title: dir_util.copy_tree crashes if folder it previously created is removed type: crash versions: Python 3.6, Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue42605> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com