diff --git a/gatherdata.py b/gatherdata.py new file mode 100644 index 0000000..73a711a --- /dev/null +++ b/gatherdata.py @@ -0,0 +1,109 @@ +import numpy as np +from myconfig import OUTPUT_DIR +from tools.mylogger import log +from pathlib import Path +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, ): + ''' + 一个文件包含 Esky .....Rs 五组数据 + 获得csv文件,转移不同的行到不同文件 + 第一列要转为时间 + ''' + # ret = [] + fs = None + self.filelist = [] + fs = self.dir.glob( "*/*/*/*.csv" ) + for f in fs: + print(f) + tmp = np.loadtxt( fs, dtype=str, delimiter=';',skiprows=1 ) + self.addNdarray2File(tmp[0]) + + def addNdarray2File( self, data:np.ndarray ): + pass + + + # 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_handheld() + diff --git a/yiwinframe.py b/yiwinframe.py index a77cddf..0a476b6 100644 --- a/yiwinframe.py +++ b/yiwinframe.py @@ -21,6 +21,7 @@ from myconfig import MyConfig,RamsesFunc from mythread import Mythead from configuration import Configuration from handheld import HandHeld,HandHeldBuf +from gatherdata import GatherData from tools.myexception import MyException from tools.mylogger import log @@ -37,6 +38,7 @@ ID_PLOT_LAST = 15 ID_PLOT_LAST_7 = 16 ID_PLOT_7 = 17 ID_PLOT_SETTING = 18 +ID_GATHER_DATA = 19 ID_HELP = 21 ID_ABOUT = 22 @@ -124,6 +126,8 @@ class YiwinFrame(wx.Frame): plotMenu.Append(ID_PLOT_7, u'&指定七条', ' ') plotMenu.AppendSeparator() plotMenu.Append(ID_PLOT_SETTING, u'&指定设置', ' ') + plotMenu.AppendSeparator() + plotMenu.Append(ID_GATHER_DATA, u'&汇总数据', ' ') self.menubar.Append(plotMenu, u'&绘图 ') aboutMenu = wx.Menu() @@ -154,6 +158,7 @@ class YiwinFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.OnPlotLast7, id=ID_PLOT_LAST_7 ) self.Bind(wx.EVT_MENU, self.OnPlot7, id=ID_PLOT_7) self.Bind(wx.EVT_MENU, self.OnPlotSetting, id=ID_PLOT_SETTING) + self.Bind(wx.EVT_MENU, self.OnGatherData, id=ID_GATHER_DATA) self.Bind(wx.EVT_MENU, self.OnHelpConfig, id=ID_HELP) self.Bind(wx.EVT_MENU, self.OnAboutConfig, id=ID_ABOUT) @@ -317,7 +322,12 @@ class YiwinFrame(wx.Frame): self.popDialog(" 功能开发中...") pass - + def OnGatherData(self,e): + gd = GatherData() + gd.gather_handheld() + self.alterStatus_0(" 数据汇总完成") + pass + def OnPlotSetting(self,e): with UI_Plot_Setting( self,