Я не могу удалить папку, которую я только что извлек из zip-файла в Python - PullRequest
1 голос
/ 11 сентября 2010

Так вот моя проблема.У меня есть скрипт Python, который берет zip-файл и извлекает его содержимое.Затем, основываясь на некоторых ограничениях, я попытаюсь удалить папку, содержимое которой было только что извлечено.По какой-то причине я получаю сообщение об ошибке WindowsError: [Ошибка 5] Доступ запрещен: «Foldername» при попытке удалить эту папку.Простой код выглядит следующим образом

wzip = zipfile.ZipFile ('zipfile.zip')

wzip.extractall ()

wzip.close ()

os.remove ('ExtractedFolder')

Если я запускаю это в интерпретаторе, я получаю следующее:

Traceback (последний вызов был последним): файл "", строка 1,в WindowsError: [Ошибка 5] Доступ запрещен: 'ExtractedFolder'

Я использую Python 2.6 в 32-разрядной Windows Vista, и я немного озадачен тем, почему это может происходить.

Ответы [ 2 ]

4 голосов
/ 11 сентября 2010

Возможны многие причины.

  1. Вам нужно использовать os.rmdir для удаления каталогов
  2. Вам нужно очистить папку первое - помните, команда Windows rmdir нужна опция /S для удалите содержимое, и Python, вероятно, использует это.
  3. Распаковка также используя атрибуты архива? Могут быть применены атрибуты только для чтения.
  4. Вы читаете что-нибудь из этого папку, прежде чем удалить? Ты можешь не закрыли его.
  5. Windows может вызвать аналогичные проблемы с именами файлов, содержащими необычные персонажи
1 голос
/ 11 сентября 2010

Я вижу возможную проблему в Windows, которая заключается в том, что у вас может быть открытый файл в этом каталоге. Убедитесь, что вы явно закрыли все файлы, которые открыли, используя file.close() (хотя ваш пример кода выглядит правильно).

Также было бы полезно взглянуть на shutils.rmtree: он может рекурсивно удалять каталоги и фиксировать ошибки.

...