code: def rt_time_log(logfile, startdate):
      
      if os.name == 'nt':
          f = io.open(logfile, 'rb')
      else:
          f = io.open(logfile, 'rb')
      phase_err = []
      lock = []
      # Extract all the phase errors
      for line_binary in f:
          try:
              line = line_binary.decode("utf8", "ignore")
          except UnicodeDecodeError:
              warnings.warn('Cannot decode line, skipping')
              continue
          if re.search("INTERNAL CLOCK PHASE ERROR", line):
              match = re.search("INTERNAL CLOCK PHASE ERROR", line)
              d_start = match.start() - 13
              phase_err.append((dt.datetime.strptime(str(startdate.year) +
                                                     ':' +
                                                     line[d_start:d_start + 12],
                                                     '%Y:%j:%H:%M:%S'),
                               float(line.rstrip().split()[-2]) *
                               0.000001))
          elif re.search("EXTERNAL CLOCK POWER IS TURNED OFF", line):
              match = re.search("EXTERNAL CLOCK POWER IS TURNED OFF", line)
              d_start = match.start() - 13
              lock.append((dt.datetime.strptime(str(startdate.year) +
                                                ':' + line[d_start:d_start + 12],
                                                '%Y:%j:%H:%M:%S'),
                          999))
      if len(phase_err) == 0 and len(lock) > 0:
          phase_err = lock
      f.close()
      return phase_err
docs: Open and read reftek raw log-file.
  
      Function to open and read a log-file as written by a RefTek RT130
      datalogger. The information within is then scanned for timing errors
      above the threshold.
  
      :type logfile: str
      :param logfile: The logfile to look in
      :type startdate: datetime.date
      :param startdate: The start of the file as a date - files contain timing \
          and the julian day, but not the year.
  
      :returns: List of tuple of (:class:`datetime.datetime`, float) as time \
          stamps and phase error.