コード例 #1
0
ファイル: myQuote_Data.py プロジェクト: zixingcheng/zxcProj
    def __init__(self, pData, interval = 1):
        self.name = pData.name
        self.interval_M = interval                      #分钟级间隔
        self.datas = {}                                 #原始数据 
        self.datasS = []                                #统计数据集--天
        self.datasS_M = None                            #统计数据对象--分钟级
        self.data = pData                               #当前数据对象

        self.setting = myQuote_Setting._Find(pData.name, pData.idTag)        #配置项,以标识为准,避免名称不统一
        self.autoSave = True 
        self.stoped = False 
        self.tagTime = datetime.datetime.now()
        self.manageTrades = gol._Get_Setting('manageBills_Stock', None)     #使用交易管理器
        gol._Set_Value('datas_Stics_D_' + pData.id, self.datasS)            #全局统计信息


        #保存基础数据
        strDir, strName = myIO.getPath_ByFile(__file__)
        Dir_Base = os.path.abspath(os.path.join(strDir, ".."))   

        self.dir = Dir_Base + "/Data/" + self.name + "/"
        self.fileName = myData_Trans.Tran_ToDatetime_str(pData.getTime(), "%Y-%m-%d")
        myIO.mkdir(self.dir) 
        if(self.loadData()):                            #加载已存数据
            self.setData(pData)
コード例 #2
0
ファイル: myQuote_Data.py プロジェクト: zixingcheng/zxcProj
    def saveData_stream_Trans(self, strDir = ""):
        #提取当前数据
        if(strDir == ""): strDir = self.dir
        dictDatas = {}
        if(True):
            myDebug.Print("... load data(" + self.name + ")...")
            path = strDir + self.fileName + ".csv"
            pDt_csv = myIO_xlsx.DtTable()
            pDt_csv.dataFieldType = ['datetime', 'float', 'float', 'float']             #数据字段类型集
            pDt_csv.Load_csv(path, isUtf = True)
        
            #组装数据
            nRows = len(pDt_csv.dataMat)
            for x in range(nRows - 1, -1, -1):
                pData = copy.deepcopy(self.data)
                pData.datetime = None                           #清空时间(必须)
                pData.fromValueList(pDt_csv.dataMat[x])         #由表数据还原
                dictDatas[pData.getTime()] = pData

        #字典排序
        keys = list(dictDatas.keys())
        keys.sort(key = None, reverse = True)
        
        #组装数据
        pDt = myIO_xlsx.DtTable()
        pDt.dataField = self.data.csvHead().split(',')
        pDt.dataMat = []
        for x in keys:
            pDt.dataMat.append(dictDatas[x].toValueList())

        #保存基础数据
        myIO.mkdir(strDir)
        pDt.Save(strDir, self.fileName, row_start = 0, col_start = 0, cell_overwrite = True, sheet_name = self.name, row_end = -1, col_end = -1, bSave_AsStr = False) 
コード例 #3
0
ファイル: myAPI_Robot.py プロジェクト: zixingcheng/zxcProj
 def __init__(self):
     #初始根目录信息
     strDir, strName = myIO.getPath_ByFile(__file__)
     self.Dir_Base = os.path.abspath(os.path.join(strDir, ".."))
     self.Dir_Image = self.Dir_Base + "/Temps/Images/wxTemps/"
     self.Dir_Image = myIO.checkPath(self.Dir_Image)
     myIO.mkdir(self.Dir_Image, False)
コード例 #4
0
ファイル: myModel.py プロジェクト: zixingcheng/zxcProj
    def _log(self, id_Target, lon, lat, height, Q, deltaXY, deltaX, deltaY):
        if (self.hasLog == False): return

        #保存数据
        strDir, strName = myIO.getPath_ByFile(__file__)
        strPath = strDir + "/static/Log"

        headStr = ""
        if (os.path.exists(strPath) == False):
            myIO.mkdir(strPath)
        strPath = strPath + "/" + myData_Trans.Tran_ToDatetime_str(
            None, "%Y-%m-%d") + ".csv"
        if (os.path.exists(strPath) == False):
            headStr = "id_Target, concentration, height, tag, longitude_Leak, latitude_Leak, height_Leak, massrate_Leak, speed, direction, windH, temperature, cloudy_is, chimney_diameter, chimney_temperature_outlet, chimney_temperature_outlet, chimney_wind_speed_outlet, dtTimestr, lon, lat, deltaXY, deltaX, deltaY"

        #文件追加数据内容
        with open(strPath, 'a+') as f:
            if (headStr != ""):
                f.write(headStr)

            dtTimestr = myData_Trans.Tran_ToDatetime_str(self.dtLeak)
            if (self.hasChimney):
                infoChimney = F'{self.chimney_diameter},{self.chimney_temperature_outlet},{self.chimney_temperature_outlet},{self.chimney_wind_speed_outlet}'
            else:
                infoChimney = F',,,'
            strLine = F'{id_Target},{Q},{height},{self.tag},{self.longitude_Leak},{self.latitude_Leak},{self.height_Leak},{self.massrate_Leak},{self.wind.wind_Speed},{self.wind.wind_Direction_Alias},{self.wind.wind_Height},{self.air.temperature},{self.sun.numCloud},{infoChimney},{dtTimestr},{lon},{lat},{deltaXY},{deltaX},{deltaY}'
            f.write("\n" + strLine)
        return True
コード例 #5
0
 def __init__(self, nameDB="zxcDB_StockReturns_Rank", dir=""):
     #初始根目录信息
     if (dir == ""):
         strDir, strName = myIO.getPath_ByFile(__file__)
         self.Dir_Base = os.path.abspath(os.path.join(strDir, "../../.."))
         self.Dir_DataDB = self.Dir_Base + "/Data/DB_Data/"
         myIO.mkdir(self.Dir_DataDB, False)
     super().__init__(nameDB, self.Dir_DataDB, False)
コード例 #6
0
 def __init__(self, dir=""):
     #初始根目录信息
     if (dir == ""):
         strDir, strName = myIO.getPath_ByFile(__file__)
         self.Dir_Base = os.path.abspath(os.path.join(strDir, "../../.."))
         self.Dir_DataDB = self.Dir_Base + "/Data/DB_Bill/"
         myIO.mkdir(self.Dir_DataDB, False)
     else:
         self.Dir_DataDB = dir
     self._Init()  #初始参数信息等
コード例 #7
0
    def __init__(self, usrID="zxcStockAppetites", dir=""):
        self.usrID = usrID  #当前账单归属用户
        self.usrDB = {}  #当前账包信息集
        self.dir = dir

        #初始根目录信息
        if (self.dir == ""):
            strDir, strName = myIO.getPath_ByFile(__file__)
            self.dirBase = os.path.abspath(os.path.join(strDir, ".."))
            self.dir = self.dirBase + "/Data/DB_Trade/Stock_Appetites/"
            myIO.mkdir(self.dir, False)
        self._Init_DB(self.dir + usrID + ".csv")  #初始参数信息等
コード例 #8
0
    def Init(self, dir="", pathPicDir=""):
        if (dir == ""):
            strDir, strName = myIO.getPath_ByFile(__file__)
            self.dirBase = os.path.abspath(os.path.join(strDir, ".."))
        else:
            self.dirBase = dir

        #初始根目录信息
        self.dirSetting = self.dirBase + "/Setting/"
        self.dirData = self.dirBase + "/Data/"
        if (pathPicDir == ""): pathPicDir = self.dirData
        self.dirPic = pathPicDir + "Pic/"
        myIO.mkdir(self.dirPic, False)
        myIO.mkdir(self.dirPic + "Temps", False, True)
コード例 #9
0
ファイル: myData_Swap.py プロジェクト: zixingcheng/zxcProj
    def SwapData_BackUp(self, path, dir=""):
        fileName = myIO.getFileName(path, False)
        if (dir == ""): dir = self.dirSwap_back
        destDir = dir + "/" + fileName[len(self.tagName) +
                                       1:len(self.tagName) + 11]

        try:
            myIO.mkdir(destDir, False, False)
            if (os.path.exists(destDir + "/" + fileName) == False):
                myIO.copyFile(path, destDir, fileName, False)
            if (os.path.exists(destDir + "/" + fileName)):
                os.remove(path)
        except:
            pass
コード例 #10
0
    def __init__(self, dbName='zxcDB_IOTs', dir=""):
        #初始根目录信息
        if (dir == ""):
            strDir, strName = myIO.getPath_ByFile(__file__)
            self.Dir_Base = os.path.abspath(os.path.join(strDir, ".."))
            self.Dir_DataDB = self.Dir_Base + "/Data/DB_Iot/Iots/"
            myIO.mkdir(self.Dir_DataDB, False)
        super().__init__(dbName, self.Dir_DataDB, True)

        #固定字段
        self.Add_Fields([
            '设备编号', '设备名称', '设备类型', '设备状态', '通讯地址', '用户名', '用户编号', '地址', '坐标X',
            "坐标Y", '日期', '备注'
        ], [
            'string', 'string', 'string', 'string', 'string', 'string',
            'string', 'string', 'string', 'string', 'datetime', 'string'
        ], [])
コード例 #11
0
    def __init__(self, nameDB = "zxcDB", dir = "", oneValid = False, params = {"hasAliaName": False}, initAuto = True): 
        self.dir = dir              #库表路径
        self.nameDB = nameDB        #库表名
        self.fields = OrderedDict() #库表字段信息
        self.fields_index = []      #库表字段-索引信息
        self.rows = OrderedDict()   #库表行数据集(带编号)
        self.indexs = {}            #索引集
        self.oneValid = oneValid    #是否只有一条记录有效
        self.params = params

        #初始根目录信息
        if(self.dir == ""):
            strDir, strName = myIO.getPath_ByFile(__file__)
            self.dirBase = os.path.abspath(os.path.join(strDir, ".."))  
            self.dir = self.dirBase + "/Data/DB_Data/"
            myIO.mkdir(self.dir, False)
        if(initAuto):
            self._Init_DB(self.dir + nameDB + ".csv"  )    #初始参数信息等 
コード例 #12
0
    def __init__(self, host=""):
        # 获取session对象(操作对象是浏览器,而不是html页面),用于处理动态变化的cookie(有cookie的就用session)
        self._webHost = host
        self._webCookies = {}
        self._webSession = requests.Session()  #构造Session
        self._webImg_ind = 0  #图片下载序号,避免重复
        self._Init_Iots()  #初始物联网对象集
        self._Init_ctrlState()  #初始IOT状态集

        #初始根目录信息
        strDir, strName = myIO.getPath_ByFile(__file__)
        self._Dir_Base = os.path.abspath(os.path.join(strDir, ".."))
        self._Dir_Image = self._Dir_Base + "/Temps/Images"
        self._Dir_Image = myIO.checkPath(self._Dir_Image)
        myIO.mkdir(self._Dir_Image, False, True)  #覆盖

        #命令任务状态监测线程启动
        self.isRuning = False
        self._iotCmds = {}  #待执行命令集
        self._iotCmds_ok = {}  #已执行命令集(含失败)
        self.Start()
コード例 #13
0
    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")
コード例 #14
0
pNotes = mySetting_Note._Get_Notes_(pathNote)
nNotes = len(pNotes)
if (nNotes < 1):
    exit()
else:
    #日志填写--循环所有日志记录
    for i in range(0, nNotes):
        pNote = pNotes[i]

        #条用添加日报
        myWebFun_gsafety.__add_日报_byNote__(clsWeb, pNote)

        #写入日志记录
        tTime_Day = time.strptime(pNote.Time, "%Y-%m-%d %H:%M")
        dirNote_Now = dirNotes + "/" + time.strftime(
            "%Y", tTime_Day) + "/" + time.strftime("%m", tTime_Day) + "月日志/"
        myIO.mkdir(dirNote_Now)

        pathNote2 = dirNote_Now + time.strftime(
            "%Y-%m-%d", tTime_Day) + ".md"  #Note_Now配置文件路径,py脚本上级目录
        print("备份日志:" + pathNote2)
        mySetting_Note._Write_Note_(pathNote2, pNotes[i])

#检索--模糊
#print(len(pDict))
#pDict2 = myWebFun_gsafety_prj.__get_prj__('核事故应急关键技术研究')
#print(pDict2)

exit()
コード例 #15
0
 def Init_LogDir(self, dir):
     self.dirLog = dir
     myIO.mkdir(self.dirLog, False)
コード例 #16
0
ファイル: infoCompany.py プロジェクト: zixingcheng/zxcProj
    def companysQuery_save():
        #载入配置
        companyID = request.args.get('companyID', "")
        companyName = request.args.get('companyName', "")
        companyInStreet = request.args.get('companyInStreet', "")
        companyInVillage = request.args.get('companyInVillage', "")
        companyAdrr = request.args.get('companyAdrr', "")
        companyScale = request.args.get('companyScale', "")
        companySpecialcase = request.args.get('companySpecialcase', "")
        companyManangeclass = request.args.get('companyManangeclass', "")
        companyContacts = request.args.get('companyContacts', "")
        companyContacts = request.args.get('companyContacts', "")

        #组装筛选条件
        fliter = ""
        if (companyID != ""): fliter += " && companyID == " + companyID
        if (companyName != ""):
            fliter += " && companyName %like% " + companyName
        if (companyInStreet != ""):
            fliter += " && companyInStreet == " + companyInStreet
        if (companyInVillage != ""):
            fliter += " && companyInVillage == " + companyInVillage
        if (companyAdrr != ""): fliter += " && companyAdrr == " + companyAdrr
        if (companyScale != ""):
            fliter += " && companyScale == " + companyScale
        if (companySpecialcase != ""):
            fliter += " && companySpecialcase == " + companySpecialcase
        if (companyManangeclass != ""):
            fliter += " && companyManangeclass == " + companyManangeclass
        if (companyContacts != ""):
            fliter += " && companyContacts == " + companyContacts
        if (fliter != ""): fliter = fliter[4:]

        #筛选
        res = {"success": 1, "data": "", "msg": ""}
        try:
            dbCompany = gol._Get_Value('dbCompany')
            totalCount, pCompanys = dbCompany.getCompanys(param=fliter,
                                                          isDel=False,
                                                          page=1,
                                                          per_page=99999999)
            if (totalCount == 0):
                res['success'] = 0
                res['msg'] = str(err)
                return myData_Json.Trans_ToJson_str(res)

            #保存属性信息
            nameUUID = myIO.create_UUID()
            dirTemp = myIO.checkPath(appWeb.baseDir +
                                     "static/data/temp/temp_" + nameUUID + "/")
            myIO.mkdir(dirTemp, True, True)
            nameFile = "企业信息数据表"
            if (totalCount == 1): nameFile = pCompanys[0]['companyName']
            nameFile = nameFile + "_" + nameUUID
            dbCompany.Save_as_csv(dirTemp + nameFile + ".csv", pCompanys, True)

            #保存相关图片
            files = []
            newfiles = []
            imgSrcdir = appWeb.baseDir
            dictImgs = {
                "imgName_1": "图片_相关部门证明",
                "imgName_2": "图片_正门照片",
                "imgName_3": "图片_生产车间照片",
                "imgName_4": "图片_营业执照注销",
                "imgName_5": "图片_断水断电证明",
                "imgName_6": "图片_执法笔录",
            }
            for x in pCompanys:
                #文件夹保存图片
                dirCompany = dirTemp + x['companyName'] + "/"
                for name in dictImgs:
                    nameImg = dictImgs[name].replace("图片_", "")
                    filesImg = x[name].split(';')
                    targetDir = dirCompany + nameImg

                    # 拷贝文件到文件夹
                    ind = 0
                    for xx in filesImg:
                        ind += 1
                        if (xx == ''): continue
                        pathDest = myIO.copyFile(imgSrcdir + xx, targetDir,
                                                 nameImg + "_" + str(ind))
                        files.append(pathDest)
                        newfiles.append(pathDest.replace(dirTemp, ""))
            files.append(dirTemp + nameFile + ".csv")
            newfiles.append(nameFile + ".csv")

            #压缩文件
            zip_name = nameFile
            zip_path = appWeb.baseDir + "static/data/Companys/"

            #if(myIO.Save_Files_zip(files, newfiles, zip_path, zip_name)):
            if (myIO.Save_Floders_zip(dirTemp, zip_path, zip_name)):
                res['filename'] = zip_name + '.zip'
                res['filefloder'] = "Companys"
                res['totalCount'] = totalCount
            else:
                res['success'] = 0
                res['msg'] = str(err)
            myIO.deldir(dirTemp)
        except Exception as err:
            res['success'] = 0
            res['msg'] = str(err)
        return myData_Json.Trans_ToJson_str(res)
コード例 #17
0
ファイル: myVoice.py プロジェクト: zixingcheng/zxcProj
def split_audio_on_silence(path,
                           silence_thresh=-50,
                           min_silence_len=1000,
                           length_limit=60,
                           keep_silence=0,
                           abandon_chunk_len=500,
                           joint_silence_len=1000,
                           out_debug=False,
                           save_path=''):
    # 按句子停顿,拆分成长度不大于1分钟录音片段
    if (out_debug): print('开始拆分(如果录音较长,请耐心等待)\n', ' *' * 30)
    dtStart = datetime.datetime.now()
    audio_segment = AudioSegment.from_wav(path)
    chunks = split_chunks_on_silence(audio_segment,
                                     silence_thresh=silence_thresh,
                                     min_silence_len=min_silence_len,
                                     length_limit=length_limit,
                                     keep_silence=keep_silence)
    if (out_debug): print('拆分结束,返回段数:', len(chunks), '\n', ' *' * 30)

    # 放弃长度小于0.5秒的录音片段
    for i in list(range(len(chunks)))[::-1]:
        if len(chunks[i]) <= abandon_chunk_len:
            chunks.pop(i)
    if (out_debug): print('取有效分段:', len(chunks))

    # 时间过短的相邻段合并,单段不超过设定秒
    chunks_adjust = []
    if (len(chunks) > 1):
        length_limit = 60 * 1000
        temp = AudioSegment.empty()
        silence = AudioSegment.silent(duration=joint_silence_len)
        nsegmental = 0
        for chunk in chunks:
            length = len(temp) + len(silence) + len(chunk)  # 预计合并后长度
            if length < length_limit:  # 小于1分钟,可以合并
                temp += silence + chunk  # 单独一段的话会多段间隔
            else:  # 大于1分钟,先将之前的保存,重新开始累加
                chunks_adjust.append(temp)
                temp = chunk
        else:
            chunks_adjust.append(temp)
        if (out_debug): print('合并后段数:', len(chunks_adjust))
    else:  # 直接返回
        if (out_debug): print('唯一段,小于限制长度,无需分割。')
        return [path]

    # 保存所有分段
    paths = []
    if (True):
        # 保存前处理一下路径文件名
        if (save_path == ''):
            save_path = "%s/chunks/%s" % (os.path.dirname(path),
                                          os.path.basename(path))
        myIO.mkdir(os.path.dirname(save_path), False)
        namef, namec = os.path.splitext(save_path)
        namec = namec[1:]

        # 保存所有分段
        breaks = len(chunks_adjust)
        for i in range(breaks):
            new = chunks_adjust[i]
            save_name = '%s_%04d.%s' % (namef, i, namec)  # 生成保存路径
            new.export(save_name, format=namec)  # 保存文件
            if (out_debug): print('%04d' % i, len(new), os.path.basename(path))
            paths.append(save_name)
        if (out_debug): print('保存完毕')
        if (out_debug):
            print("==> split audio on silence end @ %s, 耗时 %s 秒" %
                  (os.path.basename(path),
                   str((datetime.datetime.now() - dtStart).seconds)))
        return paths
    if (out_debug):
        print("==> split audio on silence failed @ %s, 耗时 %s 秒" %
              (os.path.basename(path),
               str((datetime.datetime.now() - dtStart).seconds)))
    return paths