class FolderParser(object): ''' classdocs ''' def __init__(self, logfolder): ''' Constructor ''' # store the real path to a file self.storefile = "tmp/latest_log_path" # static defined variable self.dateinternal = "DATE_INTERNAL"; self.dateinternal_lastlog = "DATEINTERNAL_LASTLOG"; self.dateexternal = "DATE_EXTERNAL"; self.dateexternal_lastlog = "DATEEXTERNAL_LASTLOG"; # store the fade and real path map self.mapfadereal = {} self.initdata() self.logfolder = logfolder if self.logfolder == None or self.logfolder == "": self.logfolder = self.getLogPath() self.fullfilepaths = [] self.fullfolderpaths = [] self.cp = ConfigParser("configs/config.xml") self.workpath() def initdata(self): self.mapfadereal[self.dateinternal] = "" self.mapfadereal[self.dateinternal_lastlog] = "" self.mapfadereal[self.dateexternal] = "" self.mapfadereal[self.dateexternal_lastlog] = "" pass def printData(self): print self.mapfadereal[self.dateinternal] print self.mapfadereal[self.dateinternal_lastlog] print self.mapfadereal[self.dateexternal] print self.mapfadereal[self.dateexternal_lastlog] # return the log path if no basepath passed def getLogPath(self): if self.logfolder == None or self.logfolder == "": f = open(self.storefile, "r") path = f.readline() # get current path return path.strip() else: return self.logfolder # return report folder def getReportPath(self): logpath = self.getLogPath() if isLinux(): result = logpath.split("/") else: result = logpath.split("\\") path = result[len(result) - 1] if path == "": path = result[len(result) - 2] if path == "": path = "xx_unknow_" # get current path os.path.abspath('.') if isLinux(): return os.path.abspath('.') + "/report/" + path.split("_")[1] else: return os.path.abspath('.') + "\\report\\" + path.split("_")[1] def workpath(self): for parent, dirnames, filenames in os.walk(self.logfolder): # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for dirname in dirnames: # 输出文件夹信息 # print "parent is:" + parent # check if endwith external_storage # check if endwith external_storage # print "dirname is" + dirname # internal_storage # internal_storage/last_log # internal_storage/2014-06-03-19-27-04 if parent.endswith('external_storage'): if dirname != 'last_log' and dirname.find("-")>0: self.mapfadereal[self.dateexternal] = dirname elif parent.endswith('last_log'): if parent.find("external_storage") > 0: self.mapfadereal[self.dateexternal_lastlog] = dirname elif parent.find("internal_storage") > 0: self.mapfadereal[self.dateinternal_lastlog] = dirname pass if parent.endswith('internal_storage'): if dirname != 'last_log' and dirname.find("-")>0: self.mapfadereal[self.dateinternal] = dirname self.fullfolderpaths.append(os.path.join(parent, dirname)) #self.printData() for filename in filenames: # 输出文件信息 # print "parent is"+ parent # print "filename is:" + filename # print "the full name of the file is:" + os.path.join(parent,filename) #输出文件路径信息 self.fullfilepaths.append(os.path.join(parent, filename)) def getmap(self): return self.mapfadereal def getfiles(self): return self.fullfilepaths def getfilesToStr(self): return ",".join(self.fullfilepaths) def getfolder(self): return self.fullfolderpaths def getfolderToStr(self): return ",".join(self.fullfolderpaths) def printmap(self): print self.mapfadereal def printfiles(self): print self.fullfilepaths def printdirs(self): print self.fullfolderpaths def getFileCount(self): return len(self.fullfilepaths) def getFolderCount(self): return len(self.fullfolderpaths) pass def getAnrFiles(self): typename = "anr" self.getFilesBy(typename) pass # return the string list of files with "," split def getFilesBy(self, typeName): files = self.cp.getProblemFiles(typeName) tmprefiles = [] #print files # get all path meeted files for i in self.fullfilepaths: for f in files: #print "xx"+f.getPath() #print "yy"+self.getRealPath(f.getPath()) pp="" if not isLinux(): pp=f.getPath().replace("/","\\") else: pp=f.getPath().replace("\\","/") #print self.getRealPath(pp) #print i if i.find(self.getRealPath(pp)) >= 0: # check items chk = f.getCheckitem() #print "chk" + str(chk) if chk == "" or chk == None: tmprefiles.append(i) else: for ii in chk.split(","): if i.find(ii) >= 0: tmprefiles.append(i) break break return ",".join(tmprefiles) pass def __checkComplete(self, f): realPath = f if realPath.find(self.dateinternal) >= 0: return None if realPath.find(self.dateinternal_lastlog) >= 0: return None if realPath.find(self.dateexternal) >= 0: return None if realPath.find(self.dateexternal_lastlog) >= 0: return None ''' if isLinux(): if f.find("/")==0: pass else: f="/"+f if self.logfolder[len(self.logfolder)-2:len(self.logfolder)-1]=="/": f=self.logfolder[0:len(self.logfolder)-2]+f else: f=self.logfolder+f else: if f.find("\\")==0: pass else: f="\\"+f if self.logfolder[len(self.logfolder)-2:len(self.logfolder)-1]=="\\": f=self.logfolder[0:len(self.logfolder)-2]+f else: f=self.logfolder+f ''' return f #return os.path.join(self.logfolder, realPath) # return null if file path is not exist def getRealPath(self, fadepath): result = fadepath if result == "" or result == None: return "" for (k, v) in self.mapfadereal.items(): # print k,v if v == "": result = result.replace(k, "nofolderfound") else: result = result.replace(k, v) # print result pass return self.__checkComplete(result) pass
class FolderParser(object): ''' classdocs ''' def __init__(self, logfolder): ''' Constructor ''' # store the real path to a file self.storefile = "tmp/latest_log_path" # static defined variable self.dateinternal = "DATE_INTERNAL" self.dateinternal_lastlog = "DATEINTERNAL_LASTLOG" self.dateexternal = "DATE_EXTERNAL" self.dateexternal_lastlog = "DATEEXTERNAL_LASTLOG" # store the fade and real path map self.mapfadereal = {} self.initdata() self.logfolder = logfolder if self.logfolder == None or self.logfolder == "": self.logfolder = self.getLogPath() self.fullfilepaths = [] self.fullfolderpaths = [] self.cp = ConfigParser("configs/config.xml") self.workpath() def initdata(self): self.mapfadereal[self.dateinternal] = "" self.mapfadereal[self.dateinternal_lastlog] = "" self.mapfadereal[self.dateexternal] = "" self.mapfadereal[self.dateexternal_lastlog] = "" pass def printData(self): print self.mapfadereal[self.dateinternal] print self.mapfadereal[self.dateinternal_lastlog] print self.mapfadereal[self.dateexternal] print self.mapfadereal[self.dateexternal_lastlog] # return the log path if no basepath passed def getLogPath(self): if self.logfolder == None or self.logfolder == "": f = open(self.storefile, "r") path = f.readline() # get current path return path.strip() else: return self.logfolder # return report folder def getReportPath(self): logpath = self.getLogPath() if isLinux(): result = logpath.split("/") else: result = logpath.split("\\") path = result[len(result) - 1] if path == "": path = result[len(result) - 2] if path == "": path = "xx_unknow_" # get current path os.path.abspath('.') if isLinux(): return os.path.abspath('.') + "/report/" + path.split("_")[1] else: return os.path.abspath('.') + "\\report\\" + path.split("_")[1] def workpath(self): for parent, dirnames, filenames in os.walk( self.logfolder): # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for dirname in dirnames: # 输出文件夹信息 # print "parent is:" + parent # check if endwith external_storage # check if endwith external_storage # print "dirname is" + dirname # internal_storage # internal_storage/last_log # internal_storage/2014-06-03-19-27-04 if parent.endswith('external_storage'): if dirname != 'last_log' and dirname.find("-") > 0: self.mapfadereal[self.dateexternal] = dirname elif parent.endswith('last_log'): if parent.find("external_storage") > 0: self.mapfadereal[self.dateexternal_lastlog] = dirname elif parent.find("internal_storage") > 0: self.mapfadereal[self.dateinternal_lastlog] = dirname pass if parent.endswith('internal_storage'): if dirname != 'last_log' and dirname.find("-") > 0: self.mapfadereal[self.dateinternal] = dirname self.fullfolderpaths.append(os.path.join(parent, dirname)) #self.printData() for filename in filenames: # 输出文件信息 # print "parent is"+ parent # print "filename is:" + filename # print "the full name of the file is:" + os.path.join(parent,filename) #输出文件路径信息 self.fullfilepaths.append(os.path.join(parent, filename)) def getmap(self): return self.mapfadereal def getfiles(self): return self.fullfilepaths def getfilesToStr(self): return ",".join(self.fullfilepaths) def getfolder(self): return self.fullfolderpaths def getfolderToStr(self): return ",".join(self.fullfolderpaths) def printmap(self): print self.mapfadereal def printfiles(self): print self.fullfilepaths def printdirs(self): print self.fullfolderpaths def getFileCount(self): return len(self.fullfilepaths) def getFolderCount(self): return len(self.fullfolderpaths) pass def getAnrFiles(self): typename = "anr" self.getFilesBy(typename) pass # return the string list of files with "," split def getFilesBy(self, typeName): files = self.cp.getProblemFiles(typeName) tmprefiles = [] #print files # get all path meeted files for i in self.fullfilepaths: for f in files: #print "xx"+f.getPath() #print "yy"+self.getRealPath(f.getPath()) pp = "" if not isLinux(): pp = f.getPath().replace("/", "\\") else: pp = f.getPath().replace("\\", "/") #print self.getRealPath(pp) #print i if i.find(self.getRealPath(pp)) >= 0: # check items chk = f.getCheckitem() #print "chk" + str(chk) if chk == "" or chk == None: tmprefiles.append(i) else: for ii in chk.split(","): if i.find(ii) >= 0: tmprefiles.append(i) break break return ",".join(tmprefiles) pass def __checkComplete(self, f): realPath = f if realPath.find(self.dateinternal) >= 0: return None if realPath.find(self.dateinternal_lastlog) >= 0: return None if realPath.find(self.dateexternal) >= 0: return None if realPath.find(self.dateexternal_lastlog) >= 0: return None ''' if isLinux(): if f.find("/")==0: pass else: f="/"+f if self.logfolder[len(self.logfolder)-2:len(self.logfolder)-1]=="/": f=self.logfolder[0:len(self.logfolder)-2]+f else: f=self.logfolder+f else: if f.find("\\")==0: pass else: f="\\"+f if self.logfolder[len(self.logfolder)-2:len(self.logfolder)-1]=="\\": f=self.logfolder[0:len(self.logfolder)-2]+f else: f=self.logfolder+f ''' return f #return os.path.join(self.logfolder, realPath) # return null if file path is not exist def getRealPath(self, fadepath): result = fadepath if result == "" or result == None: return "" for (k, v) in self.mapfadereal.items(): # print k,v if v == "": result = result.replace(k, "nofolderfound") else: result = result.replace(k, v) # print result pass return self.__checkComplete(result) pass