def FileHeader(self):
dt = self.date_time<EOL>dosdate = (dt[<NUM_LIT:0>] - <NUM_LIT>) << <NUM_LIT:9> | dt[<NUM_LIT:1>] << <NUM_LIT:5> | dt[<NUM_LIT:2>]<EOL>dostime = dt[<NUM_LIT:3>] << <NUM_LIT:11> | dt[<NUM_LIT:4>] << <NUM_LIT:5> | (dt[<NUM_LIT:5>] // <NUM_LIT:2>)<EOL>if self.flag_bits & <NUM_LIT>:<EOL><INDENT>CRC = compress_size = file_size = <NUM_LIT:0><EOL><DEDENT>else:<EOL><INDENT>CRC = self.CRC<EOL>compress_size = self.compress_size<EOL>file_size = self.file_size<EOL><DEDENT>extra = self.extra<EOL>if file_size > ZIP64_LIMIT or compress_size > ZIP64_LIMIT:<EOL><INDENT>fmt = '<STR_LIT>'<EOL>extra = extra + struct.pack(fmt,<EOL><NUM_LIT:1>, struct.calcsize(fmt)-<NUM_LIT:4>, file_size, compress_size)<EOL>file_size = <NUM_LIT><EOL>compress_size = <NUM_LIT><EOL>self.extract_version = max(<NUM_LIT>, self.extract_version)<EOL>self.create_version = max(<NUM_LIT>, self.extract_version)<EOL><DEDENT>filename, flag_bits = self._encodeFilenameFlags()<EOL>header = struct.pack(structFileHeader, stringFileHeader,<EOL>self.extract_version, self.reserved, flag_bits,<EOL>self.compress_type, dostime, dosdate, CRC,<EOL>compress_size, file_size,<EOL>len(filename), len(extra))<EOL>return header + filename + extra<EOL>
Return the per-file header as a string.