Не удается удалить папку с помощью os.remove (WindowsError: [Ошибка 5] Доступ запрещен: 'c:/temp/New Folder')
Я работаю над тестовым набором, для которого я создаю несколько подкаталогов. Тем не менее, я, кажется, не имею разрешения удалить их больше. Мой UA - учетная запись администратора (Windows XP).
Я впервые попробовал:
folder="c:/temp/"
for dir in os.listdir(folder):
os.remove(folder+dir)
а потом
folder="c:/temp/"
os.remove(folder+"New Folder")
потому что я уверен, что "Новая папка" пуста. Однако во всех случаях я получаю:
Traceback (most recent call last):
File "<string>", line 3, in <module>
WindowsError: [Error 5] Access is denied: 'c:/temp/New Folder'
Кто-нибудь знает, что идет не так?
14 ответов
os.remove
требует путь к файлу и поднимаетOSError
если путь являетсякаталогом.
Пытатьсяos.rmdir(folder+'New Folder')
Который будет:
Удалить (удалить) путь к каталогу. Работает только когда каталог пуст, в противном случае вызывается OSError.
Создание путей также безопаснее при использованииos.path.join
:
os.path.join("c:\\", "temp", "new folder")
Попробуй встроенный шутиль модуль
shutil.rmtree(folder+"New Folder")
это рекурсивно удаляет каталог, даже если у него есть содержимое.
Для Python 3.6 режим доступа к файлу должен быть 0o777:
os.chmod(filePath, 0o777)
os.remove(filePath)
os.remove()
работает только на файлы. Это не работает на каталогах. Согласно документации:
os.remove (путь) Удалить (удалить) путь к файлу. Если путь является каталогом, OSError повышается; см. rmdir() ниже, чтобы удалить каталог. Это идентично функции unlink(), описанной ниже. В Windows попытка удалить используемый файл приводит к возникновению исключения; в Unix запись каталога удаляется, но хранилище, выделенное для файла, становится недоступным, пока исходный файл больше не используется.
использование os.removedir()
для каталогов
Вы можете использовать модуль Shutil, чтобы удалить каталог и его подпапки
import os
import shutil
for dir in os.listdir(folder):
shutil.rmtree(os.path.join(folder,dir))
Использовать
os.rmdir
вместо
os.remove
удалить папку
os.rmdir("d:\\test")
Это удалит тестовую папку из
d:\\
каталог
Если вы хотите удалить папку, вы можете использовать
os.rmdir(path)
import os
import shutil
dir = os.listdir(folder)
for file in dir:
if os.path.isdir(f'{folder}\\{file}'):
shutil.rmtree(os.path.join(f'{folder}\\{file}'))
else:
os.remove(f'{folder}\\{file}')
Причина, по которой вы не можете удалять папки, потому что для удаления подпапки на диске C: вам нужны права администратора. Вызовите права администратора в python или выполните следующую попытку
Создайте простой.bat файл с помощью следующей команды оболочки
del /q "C:\Temp\*"
FOR /D %%p IN ("C:\temp\*.*") DO rmdir "%%p" /s /q
Сохраните его как file.bat и вызовите этот bat-файл из вашего файла python
Bat файл будет обрабатывать удаление подпапок с диска C:
В моем случае это было связано с отсутствием прав администратора. Я решил это, запустив терминал или cmd от имени администратора.
ключ Windows -> cmd -> щелкните правой кнопкой мыши -> запустить от имени администратора
Файл находится в режиме только для чтения, поэтому измените разрешение файла с помощью os.chmod()
функции, а затем попробуйте с os.remove()
,
Пример:
Изменить разрешение файла на 0777
а затем удалите файл.
os.chmod(filePath, 0777)
os.remove(filePath)
Не удается удалить папку с помощью os.remove
import os
if os.path.exists("demofile.txt"):
os.remove("demofile.txt")
else:
print("The file does not exist")
У меня такая же проблема в ОС серверной версии. Но эта проблема не касалась ОС типа рабочей станции. Я добавляю следующий простой код (os.chmod), и проблема исчезает:
import os
import stat
os.chmod(file, stat.S_IWRITE)
os.remove(file)