code: def write(self, records=None, path=None, fields=None, append=False,
                gzip=None):
          
          if path is None:
              if not self.is_attached():
                  raise ItsdbError('no path given for detached table')
              else:
                  path = self.path
          path = _normalize_table_path(path)
          dirpath, name = os.path.split(path)
          if fields is None:
              fields = self.fields
          if records is None:
              records = iter(self)
          _write_table(
              dirpath,
              name,
              records,
              fields,
              append=append,
              gzip=gzip,
              encoding=self.encoding)
  
          if self.is_attached() and path == _normalize_table_path(self.path):
              self.path = _table_filename(path)
              self._sync_with_file()
docs: Write the table to disk.
  
          The basic usage has no arguments and writes the table's data
          to the attached file. The parameters accommodate a variety of
          use cases, such as using *fields* to refresh a table to a
          new schema or *records* and *append* to incrementally build a
          table.
  
          Args:
              records: an iterable of :class:`Record` objects to write;
                  if `None` the table's existing data is used
              path: the destination file path; if `None` use the
                  path of the file attached to the table
              fields (:class:`Relation`): table schema to use for
                  writing, otherwise use the current one
              append: if `True`, append rather than overwrite
              gzip: compress with gzip if non-empty
          Examples:
              >>> table.write()
              >>> table.write(results, path='new/path/result')