docs: def load(self, in_fh, header=False, delimit=None, verbose=False):
      """
      Load this data_table from a stream or file.
  
      Blank lines in the file are skipped. Any existing values in this dataTable
      object are cleared before loading the new ones.
  
      :param in_fh:    load from this stream. Can also be a string, in which case
                       we treat it as a filename and attempt to load from that
                       file.
      :param header:   if True, the first row is considered a header
      :param delimit:  delimiter for splitting columns; set to None (default) to
                       split around any whitespace.
      :param verbose:  if True, output progress messages to stderr.
      """
      self.clear()
      if verbose:
        sys.stderr.write("getting input...\n")
  
      # figure out whether we need to open a file or not
      in_strm = in_fh
      if isinstance(in_strm, basestring):
        in_strm = open(in_strm)
  
      for line in in_strm:
        line = line.strip()
        if line == "":
          continue
        if header and self.header is None:
          self.header = line.split(delimit)
          continue
        parts = line.split(delimit)
        if self.frame != [] and len(parts) != len(self.frame):
          raise IOError("Cannot handle ragged data frames")
        while len(self.frame) < len(parts):
          self.frame.append([])
        for i in range(0, len(parts)):
          self.frame[i].append(parts[i])