用python进行词频统计,无法成功输出含有词频的新文件

问题:统计plk文件里面文案的词频(即词出现的频率),然后以 词:词频 的形式作为内容,输出一个文档。
我的代码没有报错,但是连创建的新文档都输出不了,不知道为什么。编写思路在最后。
过程会用到两个函数,一个是用来解析plk文件,并把当中的文案一句句以列表输出。
如下:

#coding:utf8
import os,pickle
def corpus_CCL(dir_path):
    for root,dirs,files in os.walk(dir_path):
        for name in files:
            if name.endswith(r'plk'):
                filepath = os.path.join(root,name)#找到文件的路径,下面打开它
                sentences = pickle.load(open(filepath,'rb'))  #用二进制的方式读取文件,然后load将文本解析为原本的形式,譬如原来是列表,就会解析成列表
                for sentence in sentences:
                    yield sentence #yield就是将for循环每读出的一句输出一句,不会清空前面的。最后效果就是输出一个个列表

l = corpus_CCL(r'D:\Users\DELL\Desktop\testing')
for s in l:
    print(s)

效果如下:

[pair('(', 'x'), pair('张', 'q'), pair('学林', 'n'), pair(')', 'x')]
[pair('军垦', 'n'), pair('赞歌', 'v')]
[pair('西藏', 'ns'), pair('日报', 'n'), pair('1', 'x'), pair('9', 'x'), pair('9', 'x'), pair('4', 'x'), pair('0', 'x'), pair('1', 'x'), pair('2', 'x'), pair('1', 'x')]
[pair('米', 'm'), pair('丰', 'a')]
[pair('军垦', 'n'), pair('赞歌', 'v')]
[pair('本报', 'r'), pair('通讯员', 'n'), pair(' ', 'x'), pair(' ', 'x'), pair('米', 'm'), pair('丰', 'a')]

另一个是用来统计词频的,代码和效果如下:

def sentences_word_freg(s):
    d = {}
    for word in s:
        if word in d: #每出现一次,就在value值加一
            d[word] += 1
        else:
            d[word] = 1
    return d

l = ['我','想','睡','觉','睡','觉','是','人','生','大','事']
d = sentences_word_freg(l)
for k,v in d.items():
    print(k,v)

效果:

我 1
想 1
睡 2
觉 2
是 1
人 1
生 1
大 1
事 1

现在我要把这两段代码组合起来,使得plk文件里面的文案,以 词:词频 的形式输出到一个新的文档。
以下是我的编写思路:

#coding:utf8
import os,pickle
def sentences_word_freg(s):
    d = {}
    for word in s:
        if word in d:
            d[word] += 1
        else:
            d[word] = 1
    return d

text = []
def corpus_dic(dir_path):
    for root,dirs,files in os.walk(dir_path):
        for name in files:
            if name.endswith(r'.plk'):
                filepath = os.path.join(root,name)
                sentences = pickle.load(open(filepath,'rb'))
                for sentence in sentences:
                    yield sentence
                    text.append(sentence)  #以上是第一和第二个函数。这句是想把sentence放到text
    for root, dirs, files in os.walk(dir_path): #以下开始创建新的文件
        for n in files:
            cpf = os.path.join(root,r'out'+n)
            with open(cpf,'w',-1,encoding='utf8') as cpfiles:#用只写模式打开这个新建文件,遍历text里面的sentence,把里面的词语挑出来,给他们统计词频。
                for s in text:
                    for w in s:
                        sentences_word_freg(w)
                    cpfiles.writelines('  ')

corpus_dic(r'D:\Users\DELL\Desktop\testing')

结果:没报错,但是文档也没成功建立,什么都没发生TVT

C:\ProgramData\Anaconda3\python.exe C:/Users/DELL/PycharmProjects/111/homework/homework7.py

Process finished with exit code 0

请问,为什么会这样呢?

试试下面这个代码:

# coding:utf8
import os
import pickle


def sentences_word_freg(s):
    d = {}
    for word in s:
        if word in d:
            d[word] += 1
        else:
            d[word] = 1
    return d


def corpus_dic(dir_path):
    for root, dirs, files in os.walk(dir_path):
        for name in files:
            if name.endswith(r'.plk'):
                filepath = os.path.join(root, name)
                sentences = pickle.load(open(filepath, 'rb'))

                # 创建一个新的文档名,例如:将原始文件名 "example.plk" 更改为 "out_example.txt"
                new_filename = "out_" + name[:-4] + ".txt"
                new_filepath = os.path.join(root, new_filename)

                with open(new_filepath, 'w', encoding='utf8') as cpfiles:
                    for sentence in sentences:
                        d = sentences_word_freg([pair[0] for pair in sentence])
                        for k, v in d.items():
                            cpfiles.write("{}:{}\n".format(k, v))
                        cpfiles.write("\n")


corpus_dic(r'D:\Users\DELL\Desktop\testing')