Обзор

В некоторых ситуациях необходимо выборочное удаление файлов из архива. Удаление может осуществляться по маске или любому другому критерию.
Aspose.ZIP поддерживает выборочное удаление из нескольких форматов.

Python удалить файл из ZIP-архива

Метод delete_entry используется для удаления всей записи из ZIP-архива. Эта операция независима и не требует переобработки всего архива.
Записи ZIP-архива можно удалить с помощью пары методов DeleteEntry . Удаление записи происходит без переупаковки, поэтому другие записи остаются неизменными без распаковки и повторного сжатия.

    with zp.Archive("archive.zip") as archive:
        while len(archive.entries) > 1:
            archive.delete_entry(archive.entries[0])
        archive.save("last_entry.zip")

Этот код обрабатывает существующий ZIP-архив «archive.zip». Он последовательно удаляет все записи, кроме последней, фактически создавая новый архив с именем «last_entry.zip», содержащий только оставшийся файл.

Удалить файл из TAR

Метод delete_entry также эффективен для удаления записей из архива TAR. Этот процесс работает независимо, что исключает необходимость повторной обработки всего архива. Используя метод delete_entry для файлов TAR, как показано в примере ниже, записи можно легко удалить, гарантируя, что оставшиеся записи не будут затронуты и не подвергнутся распаковке или повторному сжатию.

    with zp.tar.TarArchive("two_files.tar") as archive:
        archive.delete_entry(0)
        archive.save("single_file.tar")

Если вы хотите удалить записи из сжатого tar (*.tar.gz), необходимо распаковать его в обычный *.tar.

CPIO Удалить файл из архива

Записи можно удалять из CPIO, аналогично TAR.

    with zp.cpio.CpioArchive("two_files.cpio") as archive:
        archive.delete_entry(archive.entries[0]).save("single_file.cpio")

Помните, что метод delete_entry возвращает экземпляр архива. В некоторых случаях это поможет вам сделать ваш код более компактным.

Удалить из файлов XAR

В архиве Xar также есть метод удаления одной записи delete_entry.
В этом примере удаляются все записи, кроме последней.

    with zp.xar.XarArchive("archive.xar") as archive:
        while len(archive.entries) > 1:
            archive.delete_entry(0)
        archive.save("last.xar")

В этом примере демонстрируется изолированная обработка, то есть она изменяет архив, не затрагивая сжатое состояние остальных записей. Код итеративно удаляет записи из «archive.xar», пока не останется только одна. Наконец, полученный архив сохраняется как «last.xar».

Другие поддерживаемые функции API Aspose.ZIP для Python.Net

С помощью библиотеки Aspose.ZIP в Python.Net вы можете легко решать различные задачи, связанные с документами в формате ZIP. Если вам нужно конвертировать форматы, объединять файлы, редактировать содержимое или извлекать данные, Aspose.ZIP предоставляет комплексные функциональные возможности для оптимизации вашего рабочего процесса и повышения производительности.

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: