use_data_generate_csv.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import json
  2. import multiprocessing
  3. import os
  4. def init_shunxu():
  5. with open('cedian.txt', 'r') as f:
  6. datas = [i.strip() for i in f.readline() if i.strip()]
  7. result_map = dict()
  8. for data in datas:
  9. da = data.split('\t')
  10. point = Mesurepoint(da[0], da[2], da[4], da[5], da[6])
  11. if point.wind_factory in result_map.keys():
  12. if point.wind_no in result_map[point.wind_factory].keys():
  13. result_map[point.wind_factory][point.wind_no].append(point)
  14. else:
  15. result_map[point.wind_factory][point.wind_no] = [point]
  16. else:
  17. result_map[point.wind_factory] = {point.wind_no: [point]}
  18. return result_map
  19. class Mesurepoint(object):
  20. def __init__(self, wind_factory, wind_no, cn_name, shuxun, en_name):
  21. self.wind_factory = wind_factory
  22. self.wind_no = wind_no
  23. self.cn_name = cn_name
  24. self.shuxun = int(shuxun) + 16388
  25. self.en_name = en_name
  26. def mult_solver(wind_factory, base_data, result_map, is_first, seconds):
  27. for wind_no in result_map[wind_factory].keys():
  28. shunxuhaos = [point.shuxun for point in result_map[wind_factory][wind_no]]
  29. shunxuhaos.insert(0, '-1')
  30. os.makedirs(os.path.join('104', wind_factory, str(seconds) + '秒'), exist_ok=True)
  31. with open(os.path.join('104', wind_factory, str(seconds) + '秒', '风机号' + str(wind_no) + '.csv'),
  32. 'a') as f:
  33. if is_first:
  34. cols = ['time']
  35. for point in result_map[wind_factory][wind_no]:
  36. cols.append(point.cn_name)
  37. f.write(",".join(cols))
  38. f.write('\n')
  39. datas = [str(base_data[str(i)]) for i in shunxuhaos]
  40. f.write(",".join(datas))
  41. f.write('\n')
  42. def save_csv(base_data, seconds, is_first=False):
  43. wind_factories = result_map.keys()
  44. with multiprocessing.Pool(6) as pool:
  45. pool.starmap(mult_solver, [(i, base_data, result_map, is_first, seconds) for i in wind_factories])
  46. def generate_data(base_data, all_datas, seconds):
  47. save_csv(base_data, seconds, True)
  48. now_time = base_data['-1']
  49. for data in all_datas:
  50. data['-1'] = data['-1'].split('.')[0]
  51. base_data.update(data)
  52. if now_time != data['-1'] and int(data['-1'][-2:]) % seconds == 0:
  53. now_time = data['-1']
  54. save_csv(base_data, seconds)
  55. if __name__ == '__main__':
  56. file_path = r'C:\Users\wzl\Desktop\241\2404 (复件)\20250310.txt'
  57. result_dict = dict()
  58. begin_end = [16388, 22744]
  59. base_data = {}
  60. for i in range(begin_end[0], begin_end[1] + 1):
  61. base_data[str(i)] = 0
  62. base_data['-1'] = ''
  63. result_map = init_shunxu()
  64. all_datas = list()
  65. with open(file_path, 'r') as f:
  66. line = f.readline()
  67. while line:
  68. fixed_str = line.replace('{', '{"').replace(':"', '":"').replace(',', ',"')
  69. line_data = {}
  70. line_data = json.loads(fixed_str)
  71. all_datas.append(line_data)
  72. line = f.readline()
  73. generate_data(base_data, all_datas, 1)
  74. generate_data(base_data, all_datas, 3)
  75. generate_data(base_data, all_datas, 5)