|
import os |
|
import shutil |
|
from datasets import load_from_disk, concatenate_datasets |
|
|
|
def combine_datasets(main_dataset_path, datasets_to_add): |
|
""" |
|
Объединяет указанные датасеты с основным датасетом. |
|
|
|
Args: |
|
main_dataset_path (str): Путь к основному датасету, в который нужно добавить данные |
|
datasets_to_add (list): Список путей к датасетам, которые нужно добавить |
|
|
|
Returns: |
|
Dataset: Объединенный датасет |
|
""" |
|
|
|
try: |
|
main_dataset = load_from_disk(main_dataset_path) |
|
print(f"Загружен основной датасет: {main_dataset_path} ({len(main_dataset)} записей)") |
|
except Exception as e: |
|
print(f"Ошибка загрузки основного датасета: {e}") |
|
return None |
|
|
|
|
|
all_datasets = [main_dataset] |
|
|
|
|
|
for path in datasets_to_add: |
|
try: |
|
ds = load_from_disk(path) |
|
all_datasets.append(ds) |
|
print(f"Добавлен датасет: {path} ({len(ds)} записей)") |
|
except Exception as e: |
|
print(f"Ошибка загрузки датасета {path}: {e}") |
|
|
|
|
|
print(f"Объединение {len(all_datasets)} датасетов...") |
|
combined = concatenate_datasets(all_datasets) |
|
|
|
|
|
temp_dir = f"{main_dataset_path}_temp" |
|
|
|
|
|
if os.path.exists(temp_dir): |
|
shutil.rmtree(temp_dir) |
|
|
|
try: |
|
|
|
print(f"Сохранение во временную директорию {temp_dir}...") |
|
combined.save_to_disk(temp_dir) |
|
|
|
|
|
print(f"Обновление основного датасета...") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print(f"✅ Объединенный датасет ({len(combined)} записей) успешно сохранен в: {main_dataset_path}") |
|
except Exception as e: |
|
print(f"Ошибка при сохранении датасета: {e}") |
|
print(f"Временные данные сохранены в: {temp_dir}") |
|
|
|
return combined |
|
|
|
combine_datasets("/workspace/sdxs/datasets/576", ["/workspace/sdxs/datasets/eshu_576"]) |