import json import os from pathlib import Path from collections import defaultdict def analyze_json_tables(folder_path): """ Анализирует JSON файлы и подсчитывает количество таблиц в каждом документе """ # Словари для хранения статистики doc_stats = defaultdict(lambda: {'tables': 0, 'chars': 0}) total_tables = 0 total_chars = 0 # Получаем все JSON файлы в папке json_files = list(Path(folder_path).glob('*.json')) if not json_files: print(f"Не найдено JSON файлов в папке: {folder_path}") return # Обрабатываем каждый файл for json_file in json_files: try: with open(json_file, 'r', encoding='utf-8') as f: data = json.load(f) # Получаем имя документа doc_name = data.get('document', json_file.stem) # Подсчитываем таблицы if 'sheets' in data and isinstance(data['sheets'], list): num_tables = len(data['sheets']) # Подсчитываем символы (примерный размер JSON) json_str = json.dumps(data, ensure_ascii=False) num_chars = len(json_str) # Обновляем статистику doc_stats[doc_name]['tables'] += num_tables doc_stats[doc_name]['chars'] += num_chars total_tables += num_tables total_chars += num_chars except Exception as e: print(f"Ошибка при обработке файла {json_file.name}: {e}") # Выводим результаты print(f"\nВсего таблиц добавлено: {total_tables}") print(f"Общий размер: {total_chars:,} символов".replace(',', ' ')) if total_tables > 0: avg_size = total_chars // total_tables print(f"Средний размер таблицы: {avg_size:,} символов".replace(',', ' ')) print("\nПо документам:") # Сортируем по имени документа for doc_name in sorted(doc_stats.keys()): stats = doc_stats[doc_name] print(f"• {doc_name}: {stats['tables']} таблиц, {stats['chars']:,} символов".replace(',', ' ')) # Использование if __name__ == "__main__": # Укажите путь к папке с JSON файлами folder_path = "Табличные данные_JSON" # Текущая папка, или укажите свой путь # Можно также запросить путь у пользователя # folder_path = input("Введите путь к папке с JSON файлами: ") analyze_json_tables(folder_path)