from time import time import os from common.Def import * import numpy as np from pandas import DataFrame; import pandas as pd Csv_Out_Pach = "./csv/" #打开csv def OpenCsv(logtype, typename, date): path = CsvPath[logtype.name] if logtype.name in CsvPath.keys() else None if path is None: print(f"OpenCsv logtype error {logtype}") return None, None path = f"{path}/{date}" if not os.path.exists(path): os.makedirs(path) filepath = f"{path}/{typename}_{date}.csv" isNew = False if os.path.exists(filepath) else True file = open(filepath, "a", encoding="UTF-8") return file, isNew def GetValue(log, key): if key in log.keys(): return str(log[key]) return " " def WriteBillToCsv(inttype, logs, date): print(f"WriteBillToCsv inttype:{inttype} date: {date}\n") try: type = BillType(inttype) except : print(f"WriteBillToCsv no BillType {inttype}") return head = BillHead[type.name] if type.name in BillHead.keys() else None if head is None: print("WriteBillToCsv not head type " + str(inttype)) return #打开文件 file, isNew = OpenCsv(LogType.Bill, type.name, date) if isNew: #新建要写入头 file.write(','.join(BillComHead + head)) file.write(",otherData") file.write("\n") for log in logs: one = [] #写入通用头 for key in BillComHead: one.append(GetValue(log, key)) for key in head: one.append(GetValue(log, key)) #其他数据 otherKyes = list(set(log.keys()).difference(set(BillComHead + head))) otherdata = [] for key in otherKyes: otherdata.append(f"{key}={GetValue(log, key)}") file.write(','.join(one)) if len(otherdata) > 0: file.write(",") file.write(';'.join(otherdata)) file.write('\n') file.close() def WriteBdcToCsv(inttype, logs, date): print(f"WriteBdcToCsv inttype:{inttype} date: {date}\n") try: type = BdcType(inttype) except : print(f"WriteBdcToCsv no BdcType {inttype}") return head = BdcHead[type.name] if type.name in BdcHead.keys() else None if head is None: print("WriteBdcToCsv not head type " + str(inttype)) return #打开文件 file, isNew = OpenCsv(LogType.Bdc, type.name, date) if isNew: #新建要写入头 file.write(','.join(BdcComHead + head)) file.write(",otherData") file.write("\n") for log in logs: one = [] #写入通用头 for key in BdcComHead: one.append(GetValue(log, key)) for key in head: one.append(GetValue(log, key)) #其他数据 otherKyes = list(set(log.keys()).difference(set(BdcComHead + head))) otherdata = [] for key in otherKyes: otherdata.append(f"{key}={GetValue(log, key)}") file.write(','.join(one)) if len(otherdata) > 0: file.write(",") file.write(';'.join(otherdata)) file.write('\n') file.close() def WriteBdcCliToCsv(inttype, logs, date): print(f"WriteBdcCliToCsv inttype:{inttype} date: {date}\n") type = BdcCliType(inttype) head = BdcCliHead[type.name] if type.name in BdcCliHead.keys() else None if head is None: print("WriteBdcCliToCsv not head type " + str(inttype)) return #打开文件 file, isNew = OpenCsv(LogType.BdcCli, type.name, date) if isNew: #新建要写入头 file.write(','.join(BdcComHead + head)) file.write(",otherData") file.write("\n") for log in logs: one = [] #写入通用头 for key in BdcComHead: one.append(GetValue(log, key)) for key in head: one.append(GetValue(log, key)) #其他数据 otherKyes = list(set(log.keys()).difference(set(BdcComHead + head))) otherdata = [] for key in otherKyes: otherdata.append(f"{key}={GetValue(log, key)}") file.write(','.join(one)) if len(otherdata) > 0: file.write(",") file.write(';'.join(otherdata)) file.write('\n') file.close()