Раскрытие основных методов для вывода списка папок верхнего уровня в ZIP-файле

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

Метод 1: модуль Python zipfile
Python предоставляет удобный модуль zipfile, который позволяет нам легко взаимодействовать с ZIP-файлами. Вот фрагмент кода, демонстрирующий, как составить список папок верхнего уровня с помощью этого модуля:

import zipfile
def list_top_level_folders(zip_file_path):
    with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
        top_level_folders = set()
        for file_info in zip_ref.infolist():
            if '/' not in file_info.filename:
                folder_name = file_info.filename.split('\\')[0]
                top_level_folders.add(folder_name)
        return list(top_level_folders)

Метод 2: инструмент командной строки — распаковка
Если вы предпочитаете использовать инструменты командной строки, утилита unzipявляется популярным выбором. Чтобы просмотреть папки верхнего уровня, откройте терминал (командную строку) и выполните следующую команду:

unzip -l your_zip_file.zip | awk 'BEGIN{FS="/"} NR>3{print $1}'

Метод 3: пакет Java java.util.zip
Если вы работаете с Java, пакет java.util.zipпредоставляет классы для обработки ZIP-файлов. Вот пример использования Java, в котором перечислены папки верхнего уровня:

import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipFolderLister {
    public static void main(String[] args) {
        String zipFilePath = "your_zip_file.zip";
        try (ZipFile zipFile = new ZipFile(zipFilePath)) {
            Set<String> topLevelFolders = new HashSet<>();
            for (ZipEntry entry : Collections.list(zipFile.entries())) {
                if (!entry.isDirectory()) {
                    String folderName = entry.getName().split("/")[0];
                    topLevelFolders.add(folderName);
                }
            }
            System.out.println(topLevelFolders);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Метод 4: команда PowerShell — Expand-Archive
Для пользователей Windows PowerShell предоставляет командлет Expand-Archiveдля извлечения файлов из ZIP-архивов. Чтобы просмотреть папки верхнего уровня, откройте PowerShell и выполните следующую команду:

$zipFilePath = "your_zip_file.zip"
$topLevelFolders = (Expand-Archive -Path $zipFilePath -PassThru).FullName | Split-Path -Leaf
$topLevelFolders