File size: 3,035 Bytes
c0bcb11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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)