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