<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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])