示例#1
0
 def test_asciiz(self):
     bf = binfile.BinFile(self.fd)
     self.fd.seek(1)
     self.assertEqual(bf.read_asciiz(), "he")
     self.assertEqual(self.fd.tell(), 4)
     self.assertEqual(bf.read_asciiz(), "llo world")
     self.assertEqual(self.fd.tell(), 14)
示例#2
0
 def test_s8(self):
     bf = binfile.BinFile(self.fd)
     self.assertEqual(bf.read_s8(), -126)
     self.assertEqual(bf.read_s8(), 104)
     self.assertEqual(bf.read_s8(), 101)
     self.assertEqual(bf.read_s8(), 0)
     self.assertEqual(self.fd.tell(), 4)
示例#3
0
 def test_skip(self):
     bf = binfile.BinFile(self.fd)
     self.assertEqual(bf.read_u8(), 130)
     self.assertEqual(self.fd.tell(), 1)
     bf.skip(5)
     self.assertEqual(self.fd.tell(), 6)
     self.assertEqual(bf.read_u8(), 111)
示例#4
0
    def test_mixed(self):
        data = [77, 1234, -5648715644887832, "hello world", -5678]
        with open(self.filename, mode="wb") as f:
            bf = binfile.BinFile(f)
            bf.write_u8(data[0])
            bf.write_u16(data[1])
            bf.write_s64(data[2])
            bf.write_asciiz(data[3])
            bf.write_s16(data[4])

        with open(self.filename, mode="rb") as f:
            bf = binfile.BinFile(f)
            self.assertEqual(bf.read_u8(), data[0])
            self.assertEqual(bf.read_u16(), data[1])
            self.assertEqual(bf.read_s64(), data[2])
            self.assertEqual(bf.read_asciiz(), data[3])
            self.assertEqual(bf.read_s16(), data[4])
示例#5
0
    def __init__(self, input_file):

        self.binreader_file = None
        self.file_handler = None

        # File name of binary file
        self.binary_file = input_file
        # File name of header file
        self.header_file = envi_header.find_hdr_file(input_file)
        hdr_data_dict = envi_header.read_hdr_file(self.header_file)

        self.samples = int(hdr_data_dict["samples"])
        self.lines = int(hdr_data_dict["lines"])
        self.bands = int(hdr_data_dict["bands"])
        self.numpy_dtype = \
                     envi_header.ENVI_TO_NUMPY_DTYPE[hdr_data_dict["data type"]]
        self.byte_size = numpy.dtype(self.numpy_dtype).itemsize
        self.line_size = self.samples * self.bands * self.byte_size
        self.band_size = self.samples * self.lines * self.byte_size
        self.hdr_data_dict = hdr_data_dict
        self.current_line = -1
        self.current_band = -1
        self.interleave_checked = False

        # Open binary file
        if HAVE_ARSF_BINARYREADER:
            try:
                self.binreader_file = binfile.BinFile(input_file)
            except Exception as err:
                # If opening the file fails check header and binary file
                # sizes match.
                if not self.check_size(input_file):
                    raise IOError("Could not open file, "
                                  "size doesn't match header")
                # If this isn't the problem raise the exception
                else:
                    raise
        else:
            # Before opening check file size
            if not self.check_size(input_file):
                raise IOError("Could not open file, "
                              "size doesn't match header")
            self.file_handler = open(input_file, "rb")
示例#6
0
 def test_s32_be(self):
     bf = binfile.BinFile(self.fd, little=False)
     self.assertEqual(bf.read_s32(), -2107087616)
     self.assertEqual(bf.read_s32(), 1819045664)
     self.assertEqual(self.fd.tell(), 8)
示例#7
0
 def test_s32_le(self):
     bf = binfile.BinFile(self.fd, little=True)
     self.assertEqual(bf.read_s32(), 6645890)
     self.assertEqual(bf.read_s32(), 544173164)
     self.assertEqual(self.fd.tell(), 8)
示例#8
0
 def test_u32_be(self):
     bf = binfile.BinFile(self.fd, little=False)
     self.assertEqual(bf.read_u32(), 2187879680)
     self.assertEqual(bf.read_u32(), 1819045664)
     self.assertEqual(self.fd.tell(), 8)
示例#9
0
 def test_s16_be(self):
     bf = binfile.BinFile(self.fd, little=False)
     self.assertEqual(bf.read_s16(), -32152)
     self.assertEqual(bf.read_s16(), 25856)
     self.assertEqual(self.fd.tell(), 4)
示例#10
0
 def test_s16_le(self):
     bf = binfile.BinFile(self.fd, little=True)
     self.assertEqual(bf.read_s16(), 26754)
     self.assertEqual(bf.read_s16(), 101)
     self.assertEqual(self.fd.tell(), 4)
示例#11
0
 def test_float_be(self):
     bf = binfile.BinFile(self.fd, little=False)
     self.assertAlmostEqual(bf.read_float(), -1.7073653665398035e-37)
     self.assertEqual(self.fd.tell(), 4)
示例#12
0
 def test_float_le(self):
     bf = binfile.BinFile(self.fd, little=True)
     self.assertAlmostEqual(bf.read_float(), 9.312875451071659e-39)
     self.assertEqual(self.fd.tell(), 4)
示例#13
0
 def test_u64_be(self):
     bf = binfile.BinFile(self.fd, little=False)
     self.assertEqual(bf.read_u64(), 9396871675001990944)
     self.assertEqual(self.fd.tell(), 8)
示例#14
0
 def test_double_le(self):
     bf = binfile.BinFile(self.fd, little=True)
     self.assertAlmostEqual(bf.read_double(), 1.874938730448489e-152)
     self.assertEqual(self.fd.tell(), 8)
示例#15
0
 def test_ascii_with_null(self):
     bf = binfile.BinFile(self.fd)
     self.fd.seek(1)
     self.assertEqual(bf.read_ascii(8), "he\0llo w")
     self.assertEqual(self.fd.tell(), 9)
示例#16
0
 def test_ascii(self):
     bf = binfile.BinFile(self.fd)
     self.fd.seek(4)
     self.assertEqual(bf.read_ascii(5), "llo w")
     self.assertEqual(self.fd.tell(), 9)
示例#17
0
 def test_double_be(self):
     bf = binfile.BinFile(self.fd, little=False)
     self.assertAlmostEqual(bf.read_double(), -4.662586273244399e-297)
     self.assertEqual(self.fd.tell(), 8)
示例#18
0
 def test_s64_le(self):
     bf = binfile.BinFile(self.fd, little=True)
     self.assertEqual(bf.read_s64(), 2337205942747490434)
     self.assertEqual(self.fd.tell(), 8)
示例#19
0
 def test_exception(self):
     try:
         binfile.BinFile(None)
         self.assertTrue(False)
     except TypeError:
         self.assertTrue(True)
示例#20
0
import binfile

csm = binfile.BinFile("CSM.BIN")

print(csm.num_files)
print(csm.directory[0].name)
示例#21
0
 def test_s64_be(self):
     bf = binfile.BinFile(self.fd, little=False)
     self.assertEqual(bf.read_s64(), -9049872398707560672)
     self.assertEqual(self.fd.tell(), 8)