def Send_UpdataMsg(self): #组装消息内容 strText = "zxcRobot(" + self.version + ") --" #判断是否已经发送 bFirst = False strVer = myIO.getContent(self.Dir_Base + "/Data/Log/Updata.log", True) if (strVer != self.version): strText += "已启动." strText += "\n更新内容:\n" + self.verText bFirst = True myIO.Save_File(self.Dir_Base + "/Data/Log/Updata.log", self.version) else: strText += "已重启." #发送所有 msg = self.usrMMsg.OnCreatMsg() msg['usrName'] = "filehelper" msg["usrPlat"] = "wx" msg['msg'] = strText self.usrMMsg.OnHandleMsg(msg) msg["usrName"] = "" msg["groupName"] = "测试群" self.usrMMsg.OnHandleMsg(msg) if (bFirst): msg["groupName"] = "茶" self.usrMMsg.OnHandleMsg(msg)
def saveData(self, strPath = ""): #保存历史数据 if(strPath == ""): strPath = self.pathData myIO.Save_File(strPath, self.dataS_Min_Now.dataS.csvHead(), True, False) #文件追加数据内容 with open(strPath, 'a+') as f: for x in self.datasS_Min: f.write(x.dataS.toCSVString()) return True
def saveData(self, strDir = ""): #保存历史数据 strPath = self.dir + strDir + "History.csv" myIO.Save_File(strPath, self.datasS[0].csvHead(), True, False) #文件追加数据内容 with open(strPath, 'a+') as f: for x in self.datasS: f.write(x.toCSVString()) #保存当天分钟数据集 self.datasS_M.saveData()
def __init__(self, userID, usrName, usrNameNick, dirLog = ""): self.usrName = usrName #归属用户 self.usrNameNick = usrNameNick #归属用户昵称 self.userID = userID #归属用户ID self.usrID_sys = userID #归属用户ID_sys self.usrMsgs = [] #消息集 self.pathLog = "" if(dirLog != ""): nameFile = myData.iif(self.usrNameNick == '', self.usrName, self.usrNameNick) self.pathLog = dirLog + nameFile + ".csv" if(os.path.exists(self.pathLog) == False): myIO.Save_File(self.pathLog, "时间,用户名,消息,消息类型", False, True)
def saveData_stream(self, file = "", pData = None): pTime = pData.getTime() if((pTime - self.datasS_M.dtNow).total_seconds() < 1): return False #未时间步进 #文件头写入 if(file == ""): file = self.dir + self.fileName + ".csv" if(len(self.datasS_M.datasS_Min) <= 1): myIO.Save_File(file, pData.csvHead(), True, False) #文件追加数据内容 if(pData == None): pData = self.data with open(file, 'a+') as f: f.write(pData.toCSVString()) self.datasS_M.dtNow = pTime #更新时间
def output(self, lstReturn): pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {})) if (lstReturn != None and len(lstReturn) > 1): datas = [] for x in lstReturn: datas.append(x.toDict()) pMsg['datas'] = datas pMsg['result'] = True strJson = myData_Json.Trans_ToJson_str(pMsg) path = self.Dir_Swaps + "/Quote_" + myData_Trans.Tran_ToDatetime_str( None, "%Y-%m-%d-%H-%M-%S") + ".json" myIO.Save_File(path, strJson, isUtf=True, isNoBoom=True) return True return False
def SwapData_OutFile(self, tagName="", dirDest=""): dataOut = copy.copy(self.dataOut) self.dataOut = [] if (len(dataOut) < 1): return False jsonData = myData_Json.Json_Object(dataOut) dirOut = myData.iif(dirDest != "", dirDest, self.dirSwap_out) + "/" if (tagName == ""): tagName = self.tagName if (tagName == "" and dirOut == ""): return False fileName = tagName + myData_Trans.Tran_ToDatetime_str( None, "_%Y_%m_%d_%H_%M_%S") + ".json" content = jsonData.ToString(autoFormat=False).replace("\\", "/") myIO.Save_File(dirOut + fileName, content, True, False) #myDebug.Print("DataSwap Out IOFiles::" + dirOut + fileName) myDebug.Print("DataSwap Out IOFiles::" + fileName) return True
def Save_as_csv(self, path, rows, isUtf = True): #保存该csv文件,有同名文件时直接覆盖 strEnt = myData.iif(isUtf, "\r\n", "\n") # 写入字段 strLines = "ID(int)" for x in self.fields: strLines += "," + myData.iif(x in self.fields_index, "**", "") + x + "(" + self.fields[x]['type'] + ")" strLines += ",isDel(bool)" # 写入字段别名 if(self.params.get("hasAliaName", False)): strLines += strEnt + "ID" for x in self.fields: strLines += "," + self.fields[x]['nameAlias'] strLines += ",isDel(bool)" #循环所有格子组装数据 for x in rows: strLines += strEnt + self._Trans_ToStr(x) myIO.Save_File(path, strLines, isUtf, False) return True #保存数据
def Save_csv_append(self, file, pValues=[], isUtf=False, col_start=0, symbol=",", row_end=-1, col_end=-1, bSave_AsStr=True): # 写入字段 strLines = "" nRows = self._Rows(row_end) nCols = self._Cloumns(col_end) if (nRows == 0): for j in range(col_start, nCols): if (strLines == ""): strLines += self.dataField[j] else: strLines += symbol + self.dataField[j] myIO.Save_File(file, strLines, isUtf, True) #组装行数据 strLine = "" for j in range(col_start, nCols): strVaulue = self.Trans_Value_str(pValues[j], bSave_AsStr) if (strLine == ""): strLine += strVaulue else: strLine += symbol + strVaulue #文件追加数据内容 if (isUtf): with open(file, 'a+', encoding="utf-8") as f: f.write("\n" + strLine) else: with open(file, 'a+') as f: f.write("\n" + strLine) return True
def Save_csv(self, strDir, fileName, isUtf=False, row_start=0, col_start=0, symbol=",", row_end=-1, col_end=-1, bSave_AsStr=True): nCols = self._Cloumns(col_end) nRows = self._Rows(row_end) if (nRows > 0): nCols = myData.iif(col_end < 0, len(self.dataMat[0]), col_end) # 写入字段 strLines = "" for j in range(col_start, nCols): if (strLines == ""): strLines += self.dataField[j] else: strLines += symbol + self.dataField[j] #循环所有格子组装数据 strEnt = myData.iif(isUtf, "\r\n", "\n") for i in range(row_start, nRows): strLine = "" pValues = self.dataMat[i] for j in range(col_start, nCols): strVaulue = self.Trans_Value_str(pValues[j], bSave_AsStr) strLine += symbol + strVaulue strLines += strEnt + strLine[len(symbol):] #保存该csv文件,有同名文件时直接覆盖 strPath = strDir + "/" + fileName + ".csv" myIO.Save_File(strPath, strLines, isUtf, False) return True #保存数据
def Save_DB(self, isAppend=False, isUtf=True): #保存该csv文件,有同名文件时直接覆盖 strPath = self.dir + "/" + self.nameDB + ".csv" strEnt = myData.iif(isUtf, "\r\n", "\n") # 写入字段 nCols = self._FieldsCount() + 1 nRows = self._RowsCount() strLines = "ID(int)" for x in self.fields: strLines += "," + myData.iif( x in self.fields_index, "**", "") + x + "(" + self.fields[x]['type'] + ")" strLines += ",isDel(bool)" # 写入字段别名 if (self.params.get("hasAliaName", False)): strLines += strEnt for x in self.fields: strLines += "," + self.fields[x]['nameAlias'] strLines += ",isDel(bool)" #循环所有格子组装数据 if (isAppend == False or self._RowsCount() == 1): for x in self.rows: strLines += strEnt + self._Trans_ToStr(self.rows[x]) myIO.Save_File(strPath, strLines, isUtf, False) else: #文件追加数据内容 strLine = self.To_str(self.rows[list(self.rows.keys())[-1]]) if (isUtf): with open(strPath, 'a+', encoding="utf-8") as f: f.write("\n" + strLine) else: with open(strPath, 'a+') as f: f.write("\n" + strLine) return True #保存数据
def Logion(self, bSave=True, bSave_HeadImg=False): #二维码路径组装 pathPic = self.dirPic + "QR.png" patStatusStorage = self.dirData + 'zxcWeixin.pkl' #登录微信网页版(二维码扫码) myDebug.Print('登陆验证中...') itchat.auto_login(hotReload=True, enableCmdQR=False, statusStorageDir=patStatusStorage, picDir=pathPic, qrCallback=None, loginCallback=self._Logioned, exitCallback=self._LogionOuted) #获取所有好友信息 #friends = itchat.get_friends() friends = itchat.get_friends(update=True)[0:] # 核心:得到frieds列表集,内含很多信息 groups = itchat.get_chatrooms(update=True) #获取自己的UserName self.usrFriends = friends self.usrName = friends[0]['UserName'] self.usrName_Alias = friends[0]['NickName'] gol._Set_Value('zxcWx_usrName', self.usrName) gol._Set_Value('zxcWx_usrName_Alias', self.usrName_Alias) myDebug.Print(" --授权微信用户为:" + self.usrName_Alias + self.usrName) if (True): #记录为文件格式,便于其他识别 dictUsr = { 'UserName': self.usrName, 'NickName': self.usrName_Alias } myIO.Save_File(self.dirData + 'zxcWeixin.cache', str(dictUsr), True, True) #更新用户信息(回复消息处理工厂对象类) self.wxReply._Init(self.usrName, self.usrName_Alias) #消息发送测试 #self.Send_Msg("", "茶叶一主号", "测试消息1", "SHARING", 0) #self.Send_Msg("", "测试", "测试消息22", "TEXT", 1) #self.Send_Msg("", "股票行情监测群", "测试消息33", "TEXT", 1) #self.Send_Msg("", "filehelper", "/root/Public/myPrjs/zxcProj/src/Zxc.Python/zxcPy.Weixin/Data/Pic/Temps/191008-203316.png", "Image", 1) #将friends列表存下来,看看内容 if (bSave): #创建文件夹用于装载所有好友头像 self.dirPic_Head = self.dirPic + "Head/" + self.usrName_Alias + "/" myIO.mkdir(self.dirPic_Head, False) #创建主信息文件 self.dirFriends = self.dirData + "Firends" + "/" myIO.mkdir(self.dirFriends, False) w = open(self.dirFriends + self.usrName_Alias + "_friends", 'a', encoding='utf-8', errors='ignore') #循环写入所有 num = 0 for user in friends: w.write(str(user)) #用户图像 if (bSave_HeadImg): img = itchat.get_head_img(userName=user["UserName"]) fileImage = open( self.dirPic_Head + "/" + str(num) + ".jpg", 'wb') fileImage.write(img) fileImage.close() num += 1 #得到user目录下的所有文件,即各个好友头像 pics = os.listdir(self.dirPic_Head) numPic = len(pics) myDebug.Print(" --微信好友图像数:" + str(numPic) + "\n")
def saveMD(self, path): self.upData_All() strContent = self.getContent() myIO.Save_File(path, strContent, True, True)
def transData(dataType): dir = "D:\\myDevEvn\\UCMLCoreYunUMS7.6.1.8\\Standard\\Html\\BPObject\\sln_12002\\BusinessUnit\\我的测试\\data\\" pTable = myIO_xlsx.DtTable() pTable.Load_csv(dir + "dcjd_2020_08_20_pm.csv") indFields = pTable.Get_Index_Fields(pTable.dataField) ind_data = indFields[dataType] ind_name = indFields['"时间"'] ind_lng = indFields['"经度"'] ind_lat = indFields['"纬度"'] # 循环提取数据 maxValue = -999999 lstRows = [] rows = pTable._Rows() for i in range(0, rows): row = pTable[i] value = myData_Trans.To_Float(row[ind_data].replace('"', '')) if (value > maxValue): maxValue = value name = row[ind_name].replace('"', '') name = "" lng = myData_Trans.To_Float(row[ind_lng].replace('"', '')) lat = myData_Trans.To_Float(row[ind_lat].replace('"', '')) jsonInfo = {"name": name, "value": [lng, lat, value]} lstRows.append(jsonInfo) # 插值加密 dataAdds = [] deltaDic = 1.0 / 111000 * 5 for i in range(0, rows - 1): value0 = lstRows[i]['value'] value1 = lstRows[i + 1]['value'] name = lstRows[i]['name'] _deltaDic, linePoints = myData_Geometry.breakLine( value0[0], value0[1], value1[0], value1[1], deltaDic) if (len(linePoints) > 0): #计算插值 dicT = myData_Geometry.distance(value0[0], value0[1], value1[0], value1[1]) valueT = (value1[2] - value0[2]) / 2 x0 = value0[0] y0 = value0[1] numPoint = len(linePoints) for x in range(0, numPoint, 2): x1 = linePoints[x] y1 = linePoints[x + 1] dicTemp = myData_Geometry.distance(x0, y0, x1, y1) valueTemp = value0[2] + valueT * (dicTemp / dicT) jsonInfo = {"name": name, "value": [x1, y1, valueTemp]} dataAdds.append({"index": i, "jsonInfo": jsonInfo}) # 添加插值 for i in range(len(dataAdds) - 1, -1, -1): dataAdd = dataAdds[i] jsonInfo = dataAdd["jsonInfo"] ind = dataAdd["index"] lstRows.insert(ind, jsonInfo) dataInfo = [lstRows, maxValue] strData = str(dataInfo).replace("'", '"') path = dir + dataType.replace('"', '') + ".json" myIO.Save_File(path, strData, True, False) pass