2013-11-01 3 views
1

Попытки автоматически удалять файлы с питона сценарием и я получаю:shutil.rmtree() вызывает исключение WindowsError: Доступ запрещен:

Traceback (most recent call last): 
    Python script "5", line 8, in <module> 
    shutil.rmtree(os.path.join(root, d)) 
    File "shutil.pyc", line 221, in rmtree 
    File "shutil.pyc", line 219, in rmtree 
WindowsError: [Error 5] Access is denied: 'C:\\zDump\\TVzip\\Elem.avi' 

с помощью этого

import os 
import shutil 

for root, dirs, files in os.walk(eg.globals.tvzip): 
    for f in files: 
     os.remove(os.path.join(root, f)) 
    for d in dirs: 
     shutil.rmtree(os.path.join(root, d)) 

for root, dirs, files in os.walk(eg.globals.tvproc): 
    for f in files: 
     os.remove(os.path.join(root, f)) 
    for d in dirs: 
     shutil.rmtree(os.path.join(root, d)) 

Все запускается как администратор, любая помощь?

+4

Убедитесь, что файл не является 'read only'. Также возможно, что в файл все еще есть открытая дескриптор файла. – admdrew

+1

попробуйте 'os.chmod', а затем попробуйте удалить его снова. –

+0

Большое вам спасибо, некоторые из них изменили разрешения на папку. Спасибо!!! – user2945257

ответ

1

Хотя я не могу прокомментировать разрешения Windows (или их отсутствие), если у вас есть правильные perms, тогда, вероятно, будет открыт дескриптор открытого файла.

Я просто хотел упомянуть, shutil.rmtree очистит любые файлы в каталоге, который он удалит ... так что вы можете нарезать свой алгоритм пополам и прекратить удаление файлов по одному.

+1

Пока я нашел причину ошибки, которая была права доступа к папке только для чтения. Ошибка продолжает происходить. Что-то в вышеупомянутом скрипте Python меняет разрешения на чтение только, чтобы он не выполнялся при следующем запуске. Кто-нибудь знает, что вызывает это, или как избежать его изменения разрешений каждый раз, когда он запускается? благодаря – user2945257

Смежные вопросы