Эти ошибки — проблемы файловой системы. Система попросту не может обратиться к файлу или вообще перезаписать его.
IOError или OSError происходит, когда операция ввода-вывода (например, запись в файл) не удается по различным причинам: файл или директория заняты другим процессом, ошибки диска, доступа, указание неправильного «имени».
Разницы в этих ошибках нет.
Все проблемы нужно искать в вариациях расширений, банальном отсутствии доступа "администратора". Мы надеемся, что эти варианты вы переберете самостоятельно👎
Если что-то не так с простой перезаписью, ошибка выглядит вот так:
Но бывают случаи сложнее:
OSError(errno, strerror[, filename[, winerror[, filename2]]])
Вторая форма конструктора устанавливает соответствующие атрибуты. Первые два относятся к соответственно кодам ошибок самой Windows, filename/filename 2 как раз указывают на проблемные файлы.
У OSError есть подклассы исключений, они возникают в соответствии с системным кодом ошибки:
Например, ConnectionError возникает, когда одноранговый узел отклоняет попытку подключения. Соответствует errno ECONNREFUSED.
Исключение NotADirectoryError возникает, когда совершается попытка операции с каталогом, например
os.listdir(), а на самом деле путь не является каталогом.
FileNotFoundError: [Errno 2] No such file or directory: 'filename' — такое исключение возникает, когда файла не существует.
Поэтому после ошибок IOError или OSError нужно внимательно прошерстить код на обращения к файловой системе, оценить адрес файла. Как минимум убедиться, существует ли такой каталог вообще...
И не забывайте, что ваши файлы могут быть открыты программами, самой Windows и службами... А это может прерывать процесс перезаписи или вообще обращения к файлу.
Кстати, не забывайте заходить на StackOverflow и учиться на чужих ошибках: stackoverflow.com