Próbuję skopiować folder do innego po to został usunięty:dir_util.copy_tree nie powiedzie się po 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 zawiera jeden pusty plik o nazwie plik_testowy. Jeśli używam dir_util.remove_tree działa dobrze, ale po shutil.rmtree działa tylko raz, w drugiej iteracji nie powiedzie się. Wyjście:
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'
Wygodniej jest używać shutil.rmtree, ponieważ umożliwia obsługę błędów przy usuwaniu plików tylko do odczytu. Jaka jest różnica między dir_util.remove_tree i shutil.rmtree? Dlaczego copy_tree nie działa po raz drugi?
Używam Python 2.7.2 na Windows 7
Działa pod Linuksem z pythonem 2.7.2. Wydaje się, że system plików nie jest zsynchronizowany/przepłukany między wywołaniami. –
Też znajduję, że to działa z win7: py2.7.1 i py3.2.1. Czy piszesz na normalnym dysku? –
@JohanLundberg, tak, to normalny hdd – tas