1.读取文件
import os
def read_index_file(file_path):
type_dict = {
"spam": "1", "ham": "0"}
index_file = open(file_path)
index_dict = {
}
try:
for line in index_file:
arr = line.split(" ")
if len(arr) == 2:
key, value = arr
value = value.replace("../data", "").replace("\n", "")
index_dict[value] = type_dict[key.lower()]
finally:
index_file.close()
return index_dict
def read_file(file_path):
file = open(file_path, "r", encoding="gb2312", errors='ignore')
content_dict = {
}
try:
is_content = False
for line in file:
line = line.strip()
if line.startswith("From:"):
content_dict['from'] = line[5:]
elif line.startswith("To:"):
content_dict['to'] = line[3:]
elif line.startswith("Date:"):
content_dict['date'] = line[5:]
elif not line:
is_content = True
if is_content:
if 'content' in content_dict:
content_dict['content'] += line
else:
content_dict['content'] = line
finally:
file.close()
return content_dict
def process_file(file_path):
content_dict = read_file(file_path)
result_str = content_dict.get('from', 'unkown').replace(',', '').strip() + ","
result_str += content_dict.get('to', 'unknown').replace(',', '').strip() + ","
result_str += content_dict.get('date', 'unknown').replace(',', '').strip() + ","
result_str += content_dict.get('content', 'unknown').replace(',', ' ').strip()
return result_str
index_dict = read_index_file('./data/trec06c/full/index')
list0-215 = os.listdir('./data/trec06c/data-0-215')
for l1 in list0-215:
l1_path = './data/trec06c/data-0-215'+"/" + l1
print('开始处理文件夹' + l1_path)
list1 = os.listdir(l1_path)
write_file_path = './data/process01_' + l1
with open(write_file_path, "w", encoding= 'utf-8') as writer:
for l2 in list1:
l2_path = l1_path + "/" + l2
index_key = "/" + l1 + "/" + l2
if index_key in index_dict:
content_str = process_file(l2_path)
content_str += "," + index_dict[index_key] + "\n"
writer.writelines(content_str)
with open('./data/result_process01', "w", encoding='utf-8') as writer:
for l1 in list0-215:
file_path= './data/process01_' + l1
print("开始合并文件:" + file_path)
with open(file_path, encoding = 'utf-8') as file:
for line in file:
writer.writelines(line)
print(writer)
C:\Anaconda3\python.exe D:/hjz-py/Project/垃圾邮件过滤课件及数据/Spam-sorting/dataProcess.py
开始处理文件夹./data/trec06c/data-0-215/000
开始处理文件夹./data/trec06c/data-0-215/001
开始处理文件夹./data/trec06c/data-0-215/002
开始处理文件夹./data/trec06c/data-0-215/003
开始处理文件夹./data/trec06c/data-0-215/004
开始处理文件夹./data/trec06c/data-0-215/005
开始处理文件夹./data/trec06c/data-0-215/006
开始处理文件夹./data/trec06c/data-0-215/007
开始处理文件夹./data/trec06c/data-0-215/008
开始处理文件夹./data/trec06c/data-0-215/009
开始处理文件夹./data/trec06c/data-0-215/010
开始处理文件夹./data/trec06c/data-0-215/011
开始处理文件夹./data/trec06c/data-0-215/012
开始处理文件夹./data/trec06c/data-0-215/013
开始处理文件夹./data/trec06c/data-0-215/014
开始处理文件夹./data/trec06c/data-0-215/015
开始处理文件夹./data/trec06c/data-0-215/016
开始处理文件夹./data/trec06c/data-0-215/017
开始处理文件夹./data/trec06c/data-0-215/018
开始处理文件夹./data/trec06c/data-0-215/019
开始处理文件夹./data/trec06c/data-0-215/020
开始处理文件夹./data/trec06c/data-0-215/021
开始处理文件夹./data/trec06c/data-0-215/022
开始处理文件夹./data/trec06c/data-0-215/023
开始处理文件夹./data/trec06c/data-0-215/024
开始处理文件夹./data/trec06c/data-0-215/025
开始处理文件夹./data/trec06c/data-0-215/026
开始处理文件夹./data/trec06c/data-0-215/027
开始处理文件夹./data/trec06c/data-0-215/028
开始处理文件夹./data/trec06c/data-0-215/029
开始处理文件夹./data/trec06c/data-0-215/030
开始处理文件夹./data/trec06c/data-0-215/031
开始处理文件夹./data/trec06c/data-0-215/032
开始处理文件夹./data/trec06c/data-0-215/033
开始处理文件夹./data/trec06c/data-0-215/034
开始处理文件夹./data/trec06c/data-0-215/035
开始处理文件夹./data/trec06c/data-0-215/036
开始处理文件夹./data/trec06c/data-0-215/037
开始处理文件夹./data/trec06c/data-0-215/038
开始处理文件夹./data/trec06c/data-0-215/039
开始处理文件夹./data/trec06c/data-0-215/040
开始处理文件夹./data/trec06c/data-0-215/041
开始处理文件夹./data/trec06c/data-0-215/042
开始处理文件夹./data/trec06c/data-0-215/043
开始处理文件夹./data/trec06c/data-0-215/044
开始处理文件夹./data/trec06c/data-0-215/045
开始处理文件夹./data/trec06c/data-0-215/046
开始处理文件夹./data/trec06c/data-0-215/047
开始处理文件夹./data/trec06c/data-0-215/048
开始处理文件夹./data/trec06c/data-0-215/049
开始处理文件夹./data/trec06c/data-0-215/050
开始处理文件夹./data/trec06c/data-0-215/051
开始处理文件夹./data/trec06c/data-0-215/052
开始处理文件夹./data/trec06c/data-0-215/053
开始处理文件夹./data/trec06c/data-0-215/054
开始处理文件夹./data/trec06c/data-0-215/055
开始处理文件夹./data/trec06c/data-0-215/056
开始处理文件夹./data/trec06c/data-0-215/057
开始处理文件夹./data/trec06c/data-0-215/058
开始处理文件夹./data/trec06c/data-0-215/059
开始处理文件夹./data/trec06c/data-0-215/060
开始处理文件夹./data/trec06c/data-0-215/061
开始处理文件夹./data/trec06c/data-0-215/062
开始处理文件夹./data/trec06c/data-0-215/063
开始处理文件夹./data/trec06c/data-0-215/064
开始处理文件夹./data/trec06c/data-0-215/065
开始处理文件夹./data/trec06c/data-0-215/066
开始处理文件夹./data/trec06c/data-0-215/067
开始处理文件夹./data/trec06c/data-0-215/068
开始处理文件夹./data/trec06c/data-0-215/069
开始处理文件夹./data/trec06c/data-0-215/070
开始处理文件夹./data/trec06c/data-0-215/071
开始处理文件夹./data/trec06c/data-0-215/072
开始处理文件夹./data/trec06c/data-0-215/073
开始处理文件夹./data/trec06c/data-0-215/074
开始处理文件夹./data/trec06c/data-0-215/075
开始处理文件夹./data/trec06c/data-0-215/076
开始处理文件夹./data/trec06c/data-0-215/077
开始处理文件夹./data/trec06c/data-0-215/078
开始处理文件夹./data/trec06c/data-0-215/079
开始处理文件夹./data/trec06c/data-0-215/080
开始处理文件夹./data/trec06c/data-0-215/081
开始处理文件夹./data/trec06c/data-0-215/082
开始处理文件夹./data/trec06c/data-0-215/083
开始处理文件夹./data/trec06c/data-0-215/084
开始处理文件夹./data/trec06c/data-0-215/085
开始处理文件夹./data/trec06c/data-0-215/086
开始处理文件夹./data/trec06c/data-0-215/087
开始处理文件夹./data/trec06c/data-0-215/088
开始处理文件夹./data/trec06c/data-0-215/089
开始处理文件夹./data/trec06c/data-0-215/090
开始处理文件夹./data/trec06c/data-0-215/091
开始处理文件夹./data/trec06c/data-0-215/092
开始处理文件夹./data/trec06c/data-0-215/093
开始处理文件夹./data/trec06c/data-0-215/094
开始处理文件夹./data/trec06c/data-0-215/095
开始处理文件夹./data/trec06c/data-0-215/096
开始处理文件夹./data/trec06c/data-0-215/097
开始处理文件夹./data/trec06c/data-0-215/098
开始处理文件夹./data/trec06c/data-0-215/099
开始处理文件夹./data/trec06c/data-0-215/100
开始处理文件夹./data/trec06c/data-0-215/101
开始处理文件夹./data/trec06c/data-0-215/102
开始处理文件夹./data/trec06c/data-0-215/103
开始处理文件夹./data/trec06c/data-0-215/104
开始处理文件夹./data/trec06c/data-0-215/105
开始处理文件夹./data/trec06c/data-0-215/106
开始处理文件夹./data/trec06c/data-0-215/107
开始处理文件夹./data/trec06c/data-0-215/108
开始处理文件夹./data/trec06c/data-0-215/109
开始处理文件夹./data/trec06c/data-0-215/110
开始处理文件夹./data/trec06c/data-0-215/111
开始处理文件夹./data/trec06c/data-0-215/112
开始处理文件夹./data/trec06c/data-0-215/113
开始处理文件夹./data/trec06c/data-0-215/114
开始处理文件夹./data/trec06c/data-0-215/115
开始处理文件夹./data/trec06c/data