Что может вызвать эту ошибку?
У вас просто нет доступа к папке, в которой вы пишете, для текущего процесса (python.exe) или, возможно, даже для пользователя. Если ваш пользователь не является администратором, могут быть каталоги, для которых у вас нет прав на запись.
Как этого избежать?
В целом, чтобы избежать такого исключения, можно было бы использовать блок try
и except
, в этом случае было бы IOError
. Поэтому, если вы просто хотите упустить Отказано в доступе и продолжить со сценарием вы можете попробовать:
try:
# Remove folder (if exists) with all files
if os.path.isdir(str(os.path.realpath('..') + "\\my_folder")):
shutil.rmtree(os.path.realpath('..') + "\\my_folder", ignore_errors=True)
# Create new folder
os.mkdir(os.path.realpath('..') + "\\my_folder")
except IOError:
print("Error upon either deleting or creating the directory or files.")
else:
print("Actions if file access was succesfull")
finally:
print("This will be executed even if an exception of IOError was encountered")
Если вы действительно не ожидали, что эту ошибку, и это не должно произойти, вы должны изменить права доступа к файлу. В зависимости от ваших прав пользователя вы можете предпринять различные шаги.
Пользователь, который может выполнять программы в качестве администратора:Вариант A
- Щелкните правой кнопкой мыши на
cmd.exe
.
- Кликните на Запуск от имени администратора.
- Перейдите к месту своего сценария через
cd
, так как он будет открыт по адресу C:\Windows\system32
, если вы не отредактируете определенные параметры.
- Запустите свой скрипт
> python myscript.py
.
Пользователь, который может выполнять программы в качестве администратора:Вариант B
- Открыть файл эксплорер.
- Перейти к папке или папкам, в которые вы хотите написать.
- Щелкните правой кнопкой мыши по нему.
- Выберите Свойства.
- В окне свойств выберите вкладку безопасности.
- Нажмите «Изменить» и отредактируйте его по своему усмотрению или необходимо предоставить доступ к программам или пользователям.
Пользователь без каких-либо привилегий администратора:
- Это, вероятно, означает, что это не ваш компьютер.
- Обратитесь в службу поддержки ПК, если в Uni или Work, или спросите своего учителя, если в школе.
- Если вы находитесь дома, и это ваш компьютер, это означает, что вы вошли в систему с пользователем, не являющимся администратором. По умолчанию вы создаете первый. Если да, проверьте настройки пользователя на панели управления.
- Оттуда на остальном почти то же самое потом.
проверить это: http://stackoverflow.com/questions/12990112/how-to-remove-folder-in-python-rmtree-onerror – Netwave