分析:
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)