code: def dsort(fname, order, has_header=True, frow=0, ofname=None):
      r
      ofname = fname if ofname is None else ofname
      obj = CsvFile(fname=fname, has_header=has_header, frow=frow)
      obj.dsort(order)
      obj.write(fname=ofname, header=has_header, append=False)
docs: r"""
      Sort file data.
  
      :param fname: Name of the comma-separated values file to sort
      :type  fname: FileNameExists_
  
      :param order: Sort order
      :type  order: :ref:`CsvColFilter`
  
      :param has_header: Flag that indicates whether the comma-separated
                         values file to sort has column headers in its first line
                         (True) or not (False)
      :type  has_header: boolean
  
      :param frow: First data row (starting from 1). If 0 the row where data
                   starts is auto-detected as the first row that has a number
                   (integer of float) in at least one of its columns
      :type  frow: NonNegativeInteger_
  
      :param ofname: Name of the output comma-separated values file, the file
                     that will contain the sorted data. If None the sorting is
                     done "in place"
      :type  ofname: FileName_ or None
  
      .. [[[cog cog.out(exobj.get_sphinx_autodoc(raised=True)) ]]]
      .. Auto-generated exceptions documentation for pcsv.dsort.dsort
  
      :raises:
       * OSError (File *[fname]* could not be found)
  
       * RuntimeError (Argument \`fname\` is not valid)
  
       * RuntimeError (Argument \`frow\` is not valid)
  
       * RuntimeError (Argument \`has_header\` is not valid)
  
       * RuntimeError (Argument \`ofname\` is not valid)
  
       * RuntimeError (Argument \`order\` is not valid)
  
       * RuntimeError (Column headers are not unique in file *[fname]*)
  
       * RuntimeError (File *[fname]* has no valid data)
  
       * RuntimeError (File *[fname]* is empty)
  
       * RuntimeError (Invalid column specification)
  
       * ValueError (Column *[column_identifier]* not found)
  
      .. [[[end]]]