包含服务器端 ,桌面端两个分支
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
awrams/gatherdata.py

138 lines
4.3 KiB

import numpy as np
from myconfig import DATA_DIR,OUTPUT_DIR
from tools.mylogger import log
from pathlib import Path
import time
# from handheld import HandHeldPath
class GatherData(object):
"""对数据进行汇总后分析 csv"""
def __init__(self, ):
super(GatherData, self).__init__()
self.dir = OUTPUT_DIR
self.extname = ".csv"
def setDir(self, fpath):
self.dir = fpath
pass
def setExtname(self, extname):
self.extname = extname
pass
def getChildDirs(self, ):
'''
按时间排放,每个目录下有五个文件 Esky....Rs
文件直接保存到 output下的五个文件 Esky ..... Rs
'''
childdirs = []
for path in Path(self.dir).iterdir():
# if path.is_dir():
# print(path)
if not path.is_dir():
continue
childdirs.append(path)
return childdirs
pass
def gather_handheld(self, ):
log.info(f" ",__name__,'gather_handheld')
childDirs = self.getChildDirs()
for cdir in childDirs:
tmp_path:Path = cdir.joinpath("Lw"+self.extname)
self.transfer_data(tmp_path)
tmp_path:Path = cdir.joinpath("Rs"+self.extname)
self.transfer_data(tmp_path)
pass
def transfer_data(self, fpath:Path):
log.info(f" ",__name__,'transfer_data')
log.info(fpath)
old_path:Path = fpath
new_path:Path = self.dir.joinpath( old_path.stem + self.extname)
if not new_path.exists():
new_path.touch()
if old_path.exists():
count = 0
with open( new_path, "a" ) as fnew:
with open( old_path, "r" ) as f:
while True:
line = f.readline()
if not line :
break
if count != 0:
fnew.write(line)
count+=1
def gather_awrams(self, ):
'''
一个文件data.csv包含 Esky .....Rs 五组数据
获得csv文件,转移不同的行到不同文件
第一列要转为时间
'''
log.info(f" ",__name__,'gather_awrams')
fs = None
self.filelist = []
fs = self.dir.glob( "*/*/*/*.csv" )
for f in fs:
# print(f)
with open(f, 'r') as fhandle:
while True:
line = fhandle.readline()
if not line:
break
self.addLine2File(f.stem, line)
pass
def addLine2File( self, fname, line:str ):
log.info(f"+++++ {fname} -- {line}",__name__,'addLine2File')
tm = fname[0:4] +"-"+ fname[5:7] +"-"+ fname[8:10] +" "+fname[11:13] +":"+fname[14:16] +":"+fname[17:19]
func = "Lw"
if line.startswith(func+";"):
log.info(f"===== Lw")
tmp_str = tm +line[len(func):]
self.save_str_by_func(tmp_str,func)
func = "Rs"
if line.startswith(func+";"):
log.info(f"===== Rs")
tmp_str = tm +line[len(func):]
self.save_str_by_func(tmp_str,func)
pass
def save_str_by_func(self, str, func):
log.info(f" {func} -- {str}",__name__,'save_str_by_func')
savepath = OUTPUT_DIR
save_fname= savepath.joinpath(func + self.extname)
if not save_fname.exists():
save_fname.touch()
with open(save_fname,"a") as fhandle:
fhandle.write(str)
# def transfer_line_without_firstline(self, oldpath:Path, newPath:Path):
# count = 0
# with open( newPath, "a" ) as fnew:
# with open( oldpath, "r" ) as f:
# line = f.readline()
# if count != 0:
# fnew.write(line)
# pass
# pass
def getFileList_awrams(self, ):
'''
一个文件包含 Esky .....Rs 五组数据
获得csv文件,转移不同的行到不同文件
'''
# ret = []
fs = None
self.filelist = []
fs = self.dir.glob( "*/*.csv" )
pass
if __name__ == "__main__":
gd = GatherData()
gd.gather_awrams()