Spaces:
Sleeping
Sleeping
| 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) |