文本分析--遍历文件夹和读写文件

分析:
1、读取指定目录下的所有文件
2、读取指定文件,输出文件内容
3、创建一个文件夹,并将内容放到指定文件中

输入文件存放样例:
输入文件夹News_split下的所有文件:
这里写图片描述

输出文件存放样例:
创建一个文件夹News_split_cut,并将文件保存到文件夹下:
这里写图片描述

实现:

# -*-coding:utf-8-*-

import sys
import re
import codecs
import os
import shutil
import jieba
import jieba.analyse

"""
    分词处理,主要就是进行分词操作
"""

# 导入自定义词典
jieba.load_userdict('user_dict.txt')
jieba.load_userdict('name_dict.txt')
stopwords = {}.fromkeys([line.rstrip() for line in open('stopkey_zh.txt')])


def read_file_cut():
    # 创建文件路径
    path = "News_split\\"  # 输入文件路径
    respath = "News_split_cut\\"  # 输出文件路径
    if os.path.isdir(respath):
        shutil.rmtree(respath, True)
    os.makedirs(respath)

    num = 2
    while num <= 271:
        # 读取文件夹中的文件
        name = "News_" + str(num)
        fileName = path + str(name) + ".txt"
        resName = respath + str(name) + ".txt"
        source = open(fileName, 'r')
        if os.path.exists(resName):
            os.remove(resName)
        result = codecs.open(resName, 'w', 'utf-8')
        line = source.readline()
        line = line.rstrip('\n')

        # 分词处理
        while line != "":
            line = unicode(line, "utf-8")
            seglist = jieba.cut(line, cut_all=False)  # 精确模式
            output = ' '.join(list(seglist))  # 空格拼接
            print type(output)
            # 去除停用词
            final = ''
            for out in output:
                out = out.encode('utf-8')
                if out not in stopwords:
                    final += out
            print final
            print type(final)
            result.write(final.decode('utf8') + '\r\n')  # 输出内容
            line = source.readline()
        else:
            print 'End file: ' + str(num)
            source.close()
            result.close()
        num = num + 1
    else:
        print 'End All'

if __name__ == '__main__':
    read_file_cut()

通用方法:
上述代码确定了文件名,这里通过读取文件夹下的任意文件来进行文件的读写。

# -*-coding:utf-8-*-

import os
import shutil

"""
    读取文件夹下的所有文件:
        1、通过文件夹路径,进入文件夹下
        2、读取文件夹下的所有文件名称
        3、文件夹路径+文件名称 = 文件路径,进入到文件中,读取文件
"""
"""
    写入文件夹中的文件中:
        1、创建文件夹(新建文件夹)
        2、新建文件夹+文件名称 = 新文件路径
        3、进入到新文件路径,写入文件内容
"""

# 读取文件夹下的所有文件
def read_file(folderpath):
    pathDir = os.listdir(folderpath)  # 列出文件夹下的文件名称
    print pathDir
    for file in pathDir:
        filepath = folderpath + file  # 进入文件中
        f = open(filepath).read()
        print f


# 先读取文件夹下的所有的文件,再按照文件不同写入到文件夹中
def write_file(folderpath, newfolderpath):
    # 创建一个文件夹
    if os.path.isdir(newfolderpath):
        shutil.rmtree(respath, True)
    os.makedirs(newfolderpath)

    # 读取文件夹中的文件
    pathDir = os.listdir(folderpath)
    for file in pathDir:
        filepath = folderpath + file
        f = open(filepath).read()  # 一个一个读取文件内容
        # 一个一个的写入文件夹中的文件
        newfilepath = newfolderpath+file
        result = open(newfilepath, 'w')
        result.write(f)


if __name__ == '__main__':
    folderpath = 'News_split\\'
    newfolderpath = 'newfolder\\'
    read_file(folderpath)
    write_file(folderpath, newfolderpath)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章