Files
autopilot/datasets/ya_go_maps/extract.py

67 lines
2.3 KiB
Python

import argparse
import os
import zipfile
from pathlib import Path
def extract_zip_to_images(dname):
"""
Разархивирует {dname}.zip в папку images.
"""
# Определяем пути
current_dir = Path(__file__).parent
zip_path = current_dir / f"{dname}.zip"
extract_dir = current_dir
# Проверяем существование архива
if not zip_path.exists():
print(f"Ошибка: архив не найден: {zip_path}")
return False
# Создаем папку для извлечения, если она не существует
extract_dir.mkdir(exist_ok=True)
try:
# Открываем архив
with zipfile.ZipFile(zip_path, "r") as zip_ref:
# Получаем список файлов в архиве
file_list = zip_ref.namelist()
print(f"Найдено {len(file_list)} файлов в архиве")
# Извлекаем все файлы
zip_ref.extractall(extract_dir)
# Получаем список извлеченных файлов
extracted_files = list(extract_dir.rglob("*"))
image_files = [f for f in extracted_files if f.is_file()]
print(f"Успешно извлечено {len(image_files)} файлов в {extract_dir}")
return True
except zipfile.BadZipFile:
print(f"Ошибка: архив поврежден или не является ZIP-файлом: {zip_path}")
return False
except Exception as e:
print(f"Ошибка при разархивировании: {e}")
return False
def main():
"""
Основная функция для запуска разархивирования.
"""
parser = argparse.ArgumentParser()
parser.add_argument('--dname', type=str, default='ya_go_maps', help='Dataset name')
args = parser.parse_args()
print(f"Начинаю разархивирование {args.dname}.zip...")
if extract_zip_to_images(args.dname):
print("Разархивирование успешно завершено!")
else:
print("Разархивирование не удалось.")
if __name__ == "__main__":
main()