В Python, при запуске shutil.rmtree
на папку, содержащую файл только для чтения, следующее исключение напечатал:shutil.rmtree не будет работать на Windows, с «Доступ запрещен»
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 221, in rmtree
onerror(os.remove, fullname, sys.exc_info())
File "C:\Python26\lib\shutil.py", line 219, in rmtree
os.remove(fullname)
WindowsError: [Error 5] Access is denied: 'build\\tcl\\tcl8.5\\msgs\\af.msg'
Глядя в Свойства файла Диалог Я заметил, что файл af.msg
установлен только для чтения.
Итак, вопрос: что является простейший обходной путь/исправить, чтобы обойти эту проблему - учитывая, что мое намерение состоит в том, чтобы сделать эквивалент rm -rf build/
но на Windows? (Без необходимости использовать сторонние инструменты, такие как unxutils или Cygwin - поскольку этот код целевых будет работать на голой Windows, установить с Python 2.6 Вт/pywin32 установлен)
'shutil.rmtree' использует' os.remove' для удаления файлов. 'os.remove' удаляет только доступные для чтения файлы (по крайней мере, в Unix). 'os.remove' не может удалить файл в Windows, если он используется. – jfs
Возможный дубликат [Удаление каталога в Python] (http://stackoverflow.com/questions/1889597/deleting-directory-in-python) – mozzbozz