New submission from Aleksey Vlasenko <[email protected]>:
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 <[email protected]>
<https://bugs.python.org/issue42605>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com