def md5(self, filename): compressed_blocks = None compress = Compress(self.source_filename) if compress.get_format(): compressed_blocks = self.__block_list( os.path.getsize(self.source_filename) ) compress.uncompress(temporary=True) blocks = self.__block_list( os.path.getsize(compress.uncompressed_filename) ) else: blocks = self.__block_list( os.path.getsize(self.source_filename) ) with open(self.source_filename) as source: checksum = hashlib.md5(source.read()).hexdigest() with open(filename, 'w') as md5: if compressed_blocks: md5.write( '%s %s %s %s %s\n' % ( checksum, blocks.blocks, blocks.blocksize, compressed_blocks.blocks, compressed_blocks.blocksize ) ) else: md5.write( '%s %s %s\n' % ( checksum, blocks.blocks, blocks.blocksize ) )