<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def _write_header(self):
        "Writes out an ARC header"
        if "org" not in self.file_headers:
            warnings.warn("Using 'unknown' for Archiving organisation name")
            self.file_headers['org'] = "Unknown"
        if "date" not in self.file_headers:
            now = datetime.datetime.utcnow()
            warnings.warn("Using '%s' for Archiving time"%now)
            self.file_headers['date'] = now
        if "ip_address" not in self.file_headers:
            warnings.warn("Using '127.0.0.1' as IP address of machine that's archiving")
            self.file_headers['ip_address'] = "127.0.0.1"
        if self.version == 1:
            payload = "1 0 %(org)s\nURL IP-address Archive-date Content-type Archive-length"%dict(org = self.file_headers['org'])
        elif self.version == 2:
            payload = "2 0 %(org)s\nURL IP-address Archive-date Content-type Result-code Checksum Location Offset Filename Archive-length"
        else:
            raise IOError("Can't write an ARC file with version '\"%s\"'"%self.version)
        
        fname = os.path.basename(self.fileobj.name)
        header = ARCHeader(url = "filedesc://%s"%fname,
                           ip_address = self.file_headers['ip_address'], 
                           date = self.file_headers['date'],
                           content_type = "text/plain", 
                           length = len(payload),
                           result_code = "200",
                           checksum = "-", 
                           location = "-",
                           offset = str(self.fileobj.tell()),
                           filename = fname)
        arc_file_header_record = ARCRecord(header, payload%self.file_headers)
        self.write(arc_file_header_record)