<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_data(self, symbols, err_recs, nr_recordings, total_error_count, percentages, time_max_list):
 """Write all obtained data to a file. Parameters symbols : list of tuples (String, non-negative int) List of all symbols with the count of recordings err_recs : dictionary count of recordings by error type nr_recordings : non-negative int number of recordings total_error_count : dictionary Count of all error that have happened by type percentages : list List of all recordings where removing the dots changed the size of the bounding box. time_max_list : list List of all recordings where the recording time is above a threshold. """

        write_file = open(self.filename, "a")
        s = ""
        for symbol, count in sorted(symbols.items(), key=lambda n: n[0]):
            if symbol in ['a', '0', 'A']:
                s += "\n%s (%i), " % (symbol, count)
            elif symbol in ['z', '9', 'Z']:
                s += "%s (%i) \n" % (symbol, count)
            else:
                s += "%s (%i), " % (symbol, count)
        print("## Data", file=write_file)
        print("Symbols: %i" % len(symbols), file=write_file)
        print("Recordings: %i" % sum(symbols.values()), file=write_file)
        print("```", file=write_file)
        print(s[:-1], file=write_file)
        print("```", file=write_file)

        # Show errors
        print("Recordings with wild points: %i (%0.2f%%)" %
              (err_recs['wild_points'],
               float(err_recs['wild_points']) / nr_recordings * 100),
              file=write_file)
        print("wild points: %i" % total_error_count['wild_points'],
              file=write_file)
        print("Recordings with missing stroke: %i (%0.2f%%)" %
              (err_recs['missing_stroke'],
               float(err_recs['missing_stroke']) / nr_recordings * 100),
              file=write_file)
        print("Recordings with errors: %i (%0.2f%%)" %
              (err_recs['total'],
               float(err_recs['total']) / nr_recordings * 100),
              file=write_file)
        print("Recordings with dots: %i (%0.2f%%)" %
              (err_recs['single_dots'],
               float(err_recs['single_dots']) / nr_recordings * 100),
              file=write_file)
        print("dots: %i" % total_error_count['single_dots'], file=write_file)
        print("size changing removal: %i (%0.2f%%)" %
              (len(percentages),
               float(len(percentages)) / nr_recordings * 100),
              file=write_file)
        print("%i recordings took more than %i ms. That were: " %
              (len(time_max_list), self.time_max_threshold),
              file=write_file)
        for recording in time_max_list:
            print("* %ims: %s: %s" %
                  (recording.get_time(),
                   utils.get_readable_time(recording.get_time()),
                   recording),
                  file=write_file)
        write_file.close()