文本分析--遍歷文件夾和讀寫文件

分析:
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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章