code: def _parse_stdout(self, out_folder):
          
          fname = self.node.load_process_class()._DEFAULT_OUTPUT_FILE  # pylint: disable=protected-access
          if fname not in out_folder._repository.list_object_names():  # pylint: disable=protected-access
              raise OutputParsingError("Cp2k output file not retrieved")
  
          result_dict = {'exceeded_walltime': False}
          abs_fn = os.path.join(out_folder._repository._get_base_folder().abspath, fname)  # pylint: disable=protected-access
          with io.open(abs_fn, mode="r", encoding="utf-8") as fobj:
              lines = fobj.readlines()
              for i_line, line in enumerate(lines):
                  if line.startswith(' ENERGY| '):
                      result_dict['energy'] = float(line.split()[8])
                      result_dict['energy_units'] = "a.u."
                  if 'The number of warnings for this run is' in line:
                      result_dict['nwarnings'] = int(line.split()[-1])
                  if 'exceeded requested execution time' in line:
                      result_dict['exceeded_walltime'] = True
                  if "KPOINTS| Band Structure Calculation" in line:
                      from aiida.orm import BandsData
                      bnds = BandsData()
                      kpoints, labels, bands = self._parse_bands(lines, i_line)
                      bnds.set_kpoints(kpoints)
                      bnds.labels = labels
                      bnds.set_bands(bands, units='eV')
                      self.out('output_bands', bnds)
  
          if 'nwarnings' not in result_dict:
              raise OutputParsingError("CP2K did not finish properly.")
  
          self.out('output_parameters', Dict(dict=result_dict))
docs: CP2K output parser