@@ -549,6 +549,7 class JRODataReader(JRODataIO): | |||
|
549 | 549 | Si un determinado file no puede ser abierto |
|
550 | 550 | """ |
|
551 | 551 | idFile = self.fileIndex |
|
552 | ||
|
552 | 553 | while(True): |
|
553 | 554 | |
|
554 | 555 | idFile += 1 |
@@ -559,22 +560,14 class JRODataReader(JRODataIO): | |||
|
559 | 560 | return 0 |
|
560 | 561 | |
|
561 | 562 | filename = self.filenameList[idFile] |
|
562 | fileSize = os.path.getsize(filename) | |
|
563 | ||
|
564 | try: | |
|
565 | fp = open(filename,'rb') | |
|
566 | except: | |
|
567 | raise IOError, "The file %s can't be opened" %filename | |
|
568 | ||
|
569 | currentSize = fileSize - fp.tell() | |
|
570 | neededSize = self.m_ProcessingHeader.blockSize + self.firstHeaderSize | |
|
571 | ||
|
572 | if (currentSize < neededSize): | |
|
573 | print "Skipping the file %s due to it hasn't enough data" %filename | |
|
563 | ||
|
564 | if not(self.__verifyFile(filename)): | |
|
574 | 565 | continue |
|
575 | ||
|
566 | ||
|
567 | fileSize = os.path.getsize(filename) | |
|
568 | fp = open(filename,'rb') | |
|
576 | 569 | break |
|
577 | ||
|
570 | ||
|
578 | 571 | self.flagIsNewFile = 1 |
|
579 | 572 | self.fileIndex = idFile |
|
580 | 573 | self.filename = filename |
@@ -780,7 +773,6 class JRODataReader(JRODataIO): | |||
|
780 | 773 | |
|
781 | 774 | return pathList, filenameList |
|
782 | 775 | |
|
783 | ||
|
784 | 776 | def __verifyFile(self, filename, msgFlag=True): |
|
785 | 777 | """ |
|
786 | 778 | Verifica que el filename tenga data valida, para ello leo el FirstHeader del file |
@@ -789,37 +781,55 class JRODataReader(JRODataIO): | |||
|
789 | 781 | 0 : file no valido para ser leido |
|
790 | 782 | 1 : file valido para ser leido |
|
791 | 783 | """ |
|
792 | m_BasicHeader = BasicHeader() | |
|
793 | m_SystemHeader = SystemHeader() | |
|
794 | m_RadarControllerHeader = RadarControllerHeader() | |
|
795 | m_ProcessingHeader = ProcessingHeader() | |
|
796 | flagFileOK = False | |
|
797 | ||
|
784 | msg = None | |
|
785 | ||
|
798 | 786 | try: |
|
799 | 787 | fp = open( filename,'rb' ) #lectura binaria |
|
788 | currentPosition = fp.tell() | |
|
800 | 789 | except: |
|
801 | 790 | if msgFlag: |
|
802 | 791 | print "The file %s can't be opened" % (filename) |
|
792 | return False | |
|
793 | ||
|
794 | neededSize = self.m_ProcessingHeader.blockSize + self.firstHeaderSize | |
|
803 | 795 | |
|
804 | try: | |
|
805 | if not( m_BasicHeader.read(fp) ): raise ValueError | |
|
806 | if not( m_SystemHeader.read(fp) ): raise ValueError | |
|
807 | if not( m_RadarControllerHeader.read(fp) ): raise ValueError | |
|
808 | if not( m_ProcessingHeader.read(fp) ): raise ValueError | |
|
809 | data_type = int(numpy.log2((m_ProcessingHeader.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR)) | |
|
810 | if m_BasicHeader.size > self.basicHeaderSize: | |
|
811 | flagFileOK = True | |
|
812 | except: | |
|
813 | if msgFlag: | |
|
814 | print "\tThe file %s is empty or it hasn't enough data" % filename | |
|
796 | if neededSize == 0: | |
|
797 | ||
|
798 | m_BasicHeader = BasicHeader() | |
|
799 | m_SystemHeader = SystemHeader() | |
|
800 | m_RadarControllerHeader = RadarControllerHeader() | |
|
801 | m_ProcessingHeader = ProcessingHeader() | |
|
802 | ||
|
803 | try: | |
|
804 | if not( m_BasicHeader.read(fp) ): raise ValueError | |
|
805 | if not( m_SystemHeader.read(fp) ): raise ValueError | |
|
806 | if not( m_RadarControllerHeader.read(fp) ): raise ValueError | |
|
807 | if not( m_ProcessingHeader.read(fp) ): raise ValueError | |
|
808 | data_type = int(numpy.log2((m_ProcessingHeader.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR)) | |
|
809 | ||
|
810 | neededSize = m_ProcessingHeader.blockSize + m_BasicHeader.size | |
|
811 | ||
|
812 | except: | |
|
813 | if msgFlag: | |
|
814 | print "\tThe file %s is empty or it hasn't enough data" % filename | |
|
815 | ||
|
816 | fp.close() | |
|
817 | return False | |
|
815 | 818 | |
|
819 | else: | |
|
820 | msg = "\tSkipping the file %s due to it hasn't enough data" %filename | |
|
821 | ||
|
816 | 822 | fp.close() |
|
823 | fileSize = os.path.getsize(filename) | |
|
824 | currentSize = fileSize - currentPosition | |
|
817 | 825 | |
|
818 | if not(flagFileOK): | |
|
819 | return 0 | |
|
820 | ||
|
821 |
return |
|
|
822 | ||
|
826 | if currentSize < neededSize: | |
|
827 | if msgFlag and (msg != None): | |
|
828 | print msg #print"\tSkipping the file %s due to it hasn't enough data" %filename | |
|
829 | return False | |
|
830 | ||
|
831 | return True | |
|
832 | ||
|
823 | 833 | def updateDataHeader(self): |
|
824 | 834 | |
|
825 | 835 | self.m_DataObj.m_BasicHeader = self.m_BasicHeader.copy() |
General Comments 0
You need to be logged in to leave comments.
Login now