dir_util.copy_tree не работает после shutil.rmtree

Я пытаюсь скопировать папку в другую после ее удаления:

for i in range(0,3):
   try:
      dir_util.remove_tree("D:/test2")
 #     shutil.rmtree("D:/test2")
      print "removed"
   except: pass

   dir_util.copy_tree("D:/test1", "D:/test2")

   print i

D: / test1 содержит один пустой файл с именем test_file. Если я использую dir_util.remove_tree, он работает нормально, но после shutil.rmtree он работает только один раз, на второй итерации он не работает. Вывод:

removed
0
removed
Traceback (most recent call last):
  File "test.py", line 53, in <module>
    dir_util.copy_tree("D:/test1", "D:/test2")
  File "C:\Python27\lib\distutils\dir_util.py", line 163, in copy_tree
    dry_run=dry_run)
  File "C:\Python27\lib\distutils\file_util.py", line 148, in copy_file
    _copy_file_contents(src, dst)
  File "C:\Python27\lib\distutils\file_util.py", line 44, in _copy_file_contents
    fdst = open(dst, 'wb')
IOError: [Errno 2] No such file or directory: 'D:/test2\\test_file'

Мне удобнее использовать shutil.rmtree, потому что он позволяет обрабатывать ошибки при удалении файлов только для чтения. В чем разница между dir_util.remove_tree и shutil.rmtree? Почему copy_tree не работает во второй раз после rmtree?

Я использую Python 2.7.2 в Windows 7

8
задан tas 6 February 2012 в 14:27
поделиться