merge_cut_word.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import zipfile
  4. # 带合并的文件目录
  5. DATA_DIR = "E:\Download\长尾关键词\普通-p"
  6. # 合并后输出文件
  7. MERGE_OUTPUT_FILE = "./data/合并结果.txt"
  8. # 排除合并的文件
  9. EXCLUDE_FILES = ['打开乱码如何处理?.txt']
  10. def get_files(path):
  11. '''
  12. 读取文件夹下的文件名称
  13. '''
  14. file_list = []
  15. for file in os.listdir(path):
  16. file_list.append(os.path.join(path,file))
  17. return file_list
  18. def merge_file_content():
  19. """
  20. 合并文件下的所有文件中的内容(仅限关键词)
  21. Parameters
  22. ----------
  23. dir_path : string
  24. 待读取的文件夹
  25. dest_file : string
  26. 合并后输出的文件
  27. exclude_file : list
  28. 跳过压缩文件中的文件
  29. ----------
  30. """
  31. print("----------- 开始 -----------")
  32. # 获取文件列表
  33. files = get_files(DATA_DIR)
  34. total_num = len(files)
  35. print("读取文件列表,待处理文件数:%d" % total_num)
  36. with open(MERGE_OUTPUT_FILE, "w", encoding="utf-8") as f:
  37. for i, file in enumerate(files):
  38. zfile = zipfile.ZipFile(file)
  39. filenames = zfile.namelist()
  40. for filename in filenames:
  41. # 重新编码文件名为正确形式
  42. realname = filename.encode('cp437').decode('gbk')
  43. # 排除无效文件
  44. if realname in EXCLUDE_FILES:
  45. continue
  46. print("正在处理文件: %s, 当前进度:%d / %d" % (realname, i, total_num))
  47. # 读取压缩文件中的文件
  48. with zfile.open(filename) as file_content:
  49. lines = file_content.readlines()
  50. # 跳过开头两行
  51. for line in lines[2:]:
  52. split = line.decode("gbk").split(",")
  53. # 只需要第一列的数据
  54. f.write(split[0])
  55. f.write("\n")
  56. print("----------- 结束 -----------")
  57. if __name__ == '__main__':
  58. merge_file_content()