Почему tarfile.extractall игнорирует ошибки по умолчанию?

Модуль tarfile в Python по умолчанию игнорирует ошибки при извлечении, если только errorlevel установлен либо 1 или же 2 (или же debug в 1 если только сообщения об ошибках должны быть напечатаны).

Попробуйте сделать mkdir /tmp/foo && sudo chown root /tmp/foo && chmod a-w /tmp/foo и используя tarfile извлечь файл.tar.gz поверх /tmp/foo - вы увидите, что ваш код Python вообще не выдал никаких исключений. Файлы не были бы извлечены за /tmp/foo который по-прежнему является пустым каталогом.

Почему это поведение? Кто / что выигрывает от этого поведения по умолчанию? Другими словами, кто и что хотел бы игнорировать, скажем, ошибки прав доступа при распаковке tar-файла?

1 ответ

Решение

Кстати, это неприятное поведение будет изменено в Python 2.7 и 3.2. http://svn.python.org/view?view=rev&revision=76780 Видимо, причина игнорирования ошибок прежде была в том, чтобы больше походить на GNU tar, который игнорирует ошибки.

Другие вопросы по тегам