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