# -*- coding: utf-8 -*- import config import os import tools import logging import zipfile TITLE= "拓展词合并" # 带合并的文件目录 DATA_DIR = "E:\Download\长尾关键词\普通-p" def get_files(path): ''' 读取文件夹下的文件列表 ''' file_list = [] for file in os.listdir(path): file_list.append(os.path.join(path,file)) return file_list def merge_file_content(): """ 合并文件下的所有文件中的内容(仅限关键词) Parameters ---------- dir_path : string 待读取的文件夹 dest_file : string 合并后输出的文件 exclude_file : list 跳过压缩文件中的文件 ---------- """ # 日志初始化 tools.init_log() tools.log_start_msg(TITLE) # 获取文件列表 files = get_files(DATA_DIR) # 总文件数 total_num = len(files) logging.info("待处理文件数:%d" % total_num) with open(config.MERGE_FILE, "w", encoding="utf-8") as f: for i, file in enumerate(files): zfile = zipfile.ZipFile(file) filenames = zfile.namelist() for filename in filenames: # 重新编码文件名为正确形式 realname = filename.encode('cp437').decode('gbk') # 排除无效文件 if realname in config.MERGE_EXCLUDE_FILES: continue logging.info("正在处理文件: %s" % realname) # 读取压缩文件中的文件 with zfile.open(filename) as file_content: lines = file_content.readlines() # 跳过开头两行 for line in lines[2:]: split = line.decode("gbk").split(",") # 只需要第一列的数据 f.write(split[0]) f.write("\n") tools.tip(total_num, i) tools.log_end_msg(TITLE) if __name__ == '__main__': merge_file_content()