from collections import Counter
import cppy.cp_util as util

def word_frequency( top_n=10 ):
    def decorator(func):
        def wrapper(*args, **kwargs):
            # 执行被装饰的函数
            result = func(*args, **kwargs)
            
            # 初始化词频计数器
            word_counts = Counter()
            
            # 分词并计数
            for word in util.extract_str_words(result):
                word_counts[word] += 1            
            
            # 输出所有词的频率最高的n个词            
            most_common = word_counts.most_common(top_n)    
            util.print_word_freqs( most_common )                    
            
            return result
        
        return wrapper
    return decorator


# 使用装饰器
@word_frequency( top_n=10 )
def read_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return file.read()


read_file( util.testfilepath )