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