code: def rewrite(fname, visitor, **kw):
      
      if not isinstance(fname, pathlib.Path):
          assert isinstance(fname, string_types)
          fname = pathlib.Path(fname)
  
      assert fname.is_file()
      with tempfile.NamedTemporaryFile(delete=False) as fp:
          tmp = pathlib.Path(fp.name)
  
      with UnicodeReader(fname, **kw) as reader_:
          with UnicodeWriter(tmp, **kw) as writer:
              for i, row in enumerate(reader_):
                  row = visitor(i, row)
                  if row is not None:
                      writer.writerow(row)
      shutil.move(str(tmp), str(fname))
docs: Utility function to rewrite rows in tsv files.
  
      :param fname: Path of the dsv file to operate on.
      :param visitor: A callable that takes a line-number and a row as input and returns a \
      (modified) row or None to filter out the row.
      :param kw: Keyword parameters are passed through to csv.reader/csv.writer.