From 21b84025d0d2543b5f6dc8c22859d25ce0e5de30 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 10 十月 2023 18:13:46 +0800 Subject: [PATCH] 交易日志格式化处理 --- log_module/log_export.py | 131 +++++++++++++++++++++++++------------------ 1 files changed, 76 insertions(+), 55 deletions(-) diff --git a/log_module/log_export.py b/log_module/log_export.py index 4f2eac2..fd508ec 100644 --- a/log_module/log_export.py +++ b/log_module/log_export.py @@ -1,7 +1,10 @@ import datetime +import hashlib +import json import logging import os import shutil +import time import constant from code_attribute import gpcode_manager @@ -179,26 +182,25 @@ date = datetime.datetime.now().strftime("%Y-%m-%d") index_list = [] buy_queues = [] - with open("{}/logs/gp/l2/l2_trade_buy_queue.{}.log".format(constant.get_path_prefix(), date), mode='r', - encoding="utf-8") as f: - while True: - line = f.readline() - if not line: - break - time_ = __get_log_time(line).strip() - if int(time_.replace(":", "")) > int("150000"): - continue + path_str = "{}/logs/gp/l2/l2_trade_buy_queue.{}.log".format(constant.get_path_prefix(), date) + lines = __load_file_content(path_str) + for line in lines: + if not line: + break + time_ = __get_log_time(line).strip() + if int(time_.replace(":", "")) > int("150000"): + continue - if line.find(f"{code}-[") >= 0: - buy_queues.append((eval(line.split(f"{code}-")[1]), time_)) + if line.find(f"{code}-[") >= 0: + buy_queues.append((eval(line.split(f"{code}-")[1]), time_)) - if line.find("鑾峰彇鎴愪氦浣嶇疆鎴愬姛锛� code-{}".format(code)) < 0: - continue - try: - index = int(line.split("index-")[1].split(" ")[0]) - index_list.append((index, time_)) - except: - pass + if line.find("鑾峰彇鎴愪氦浣嶇疆鎴愬姛锛� code-{}".format(code)) < 0: + continue + try: + index = int(line.split("index-")[1].split(" ")[0]) + index_list.append((index, time_)) + except: + pass return index_list, buy_queues @@ -207,21 +209,20 @@ if not date: date = datetime.datetime.now().strftime("%Y-%m-%d") path_str = f"{constant.get_path_prefix()}/logs/gp/l2/cancel/h_cancel.{date}.log" + lines = __load_file_content(path_str) latest_info = None - if os.path.exists(path_str): - with open(path_str, mode='r', encoding="utf-8") as f: - while True: - line = f.readline() - if not line: - break - if line.find(f"code-{code}") < 0: - continue - if line.find(f"H绾ф挙鍗曡绠楃粨鏋�") < 0: - continue - target_rate = line.split("鐩爣姣斾緥锛�")[1].split(" ")[0].strip() - cancel_num = line.split("鍙栨秷璁$畻缁撴灉")[1][1:].split("/")[0].strip() - total_num = line.split("鍙栨秷璁$畻缁撴灉")[1][1:].split("/")[1].split(" ")[0].strip() - latest_info = (target_rate, round(int(cancel_num) / int(total_num), 2), cancel_num, total_num,) + + for line in lines: + if not line: + break + if line.find(f"code-{code}") < 0: + continue + if line.find(f"H绾ф挙鍗曡绠楃粨鏋�") < 0: + continue + target_rate = line.split("鐩爣姣斾緥锛�")[1].split(" ")[0].strip() + cancel_num = line.split("鍙栨秷璁$畻缁撴灉")[1][1:].split("/")[0].strip() + total_num = line.split("鍙栨秷璁$畻缁撴灉")[1][1:].split("/")[1].split(" ")[0].strip() + latest_info = (target_rate, round(int(cancel_num) / int(total_num), 2), cancel_num, total_num,) return latest_info @@ -278,36 +279,54 @@ return results -# 鍔犺浇涔板叆寰楀垎璁板綍 -def load_buy_score_recod(code): - path = f"{constant.get_path_prefix()}/logs/gp/trade/trade_record.{tool.get_now_date_str()}.log" - fdatas = [] - if os.path.exists(path): - with open(path, 'r', encoding="utf-8") as f: +__log_file_contents = {} + + +# 鍔犺浇鏂囦欢鍐呭 +def __load_file_content(path_str, expire_timespace=20): + md5 = hashlib.md5(path_str.encode(encoding='utf-8')).hexdigest() + if md5 in __log_file_contents and time.time() - __log_file_contents[md5][0] < expire_timespace: + return __log_file_contents[md5][1] + contents = [] + if os.path.exists(path_str): + with open(path_str, 'r', encoding="utf-8") as f: lines = f.readlines() for line in lines: - data_index = line.find(f"code={code}") - if data_index > 0: - time_str = line[11:19] - data = line[line.find("data=") + 5:] - type = line[line.find("type=") + 5:line.find(" ", line.find("type="))] - fdatas.append((time_str, type, eval("{" + data + "}"))) + contents.append(line) + __log_file_contents[md5] = (time.time(), contents) + return contents + + +# 鍔犺浇涔板叆寰楀垎璁板綍 +def load_trade_recod(code): + path = f"{constant.get_path_prefix()}/logs/gp/trade/trade_record.{tool.get_now_date_str()}.log" + fdatas = [] + lines = __load_file_content(path) + for line in lines: + data_index = line.find(f"{code}") + if data_index > 0: + line = line.split(" - ")[1] + time_str = line[line.find("[") + 1:line.find("[") + 9] + data = line[line.find("]") + 1:].strip() + data_json = json.loads(data) + if data_json["code"] != code: + continue + type = data_json["type"] + fdatas.append((time_str, type, data_json["data"])) return fdatas def load_kpl_reason_changes(): path = f"{constant.get_path_prefix()}/logs/gp/kpl/kpl_limit_up_reason_change.{tool.get_now_date_str()}.log" fdatas = [] - if os.path.exists(path): - with open(path, 'r', encoding="utf-8") as f: - lines = f.readlines() - for line in lines: - if line.find("code-") > 0: - data = line[line.find("code-") + 5:] - code = data.split(":")[0] - from_r = data.split(":")[1].split("-")[0] - to_r = eval(data.split(":")[1].split("-")[1]) - fdatas.append((code, from_r, to_r)) + lines = __load_file_content(path) + for line in lines: + if line.find("code-") > 0: + data = line[line.find("code-") + 5:] + code = data.split(":")[0] + from_r = data.split(":")[1].split("-")[0] + to_r = eval(data.split(":")[1].split("-")[1]) + fdatas.append((code, from_r, to_r)) return fdatas @@ -353,7 +372,9 @@ if __name__ == '__main__': - load_huaxin_local_buy_no() + datas = load_buy_score_recod("000333") + for d in datas: + print(d) # print(get_h_cancel_compute_info("603912")) # logger_l2_h_cancel.info("test") -- Gitblit v1.8.0