code: def read_value(self, varname, path="/", cmode=None, default=NO_DEFAULT):
          
          try:
              var = self.read_variable(varname, path=path)
          except self.Error:
              if default is NO_DEFAULT: raise
              return default
  
          if cmode is None:
              # scalar or array
              # getValue is not portable!
              try:
                  return var.getValue()[0] if not var.shape else var[:]
              except IndexError:
                  return var.getValue() if not var.shape else var[:]
  
          else:
              assert var.shape[-1] == 2
              if cmode == "c":
                  return var[...,0] + 1j*var[...,1]
              else:
                  raise ValueError("Wrong value for cmode %s" % cmode)
docs: Returns the values of variable with name varname in the group specified by path.
  
          Args:
              varname: Name of the variable
              path: path to the group.
              cmode: if cmode=="c", a complex ndarrays is constructed and returned
                  (netcdf does not provide native support from complex datatype).
              default: returns default if varname is not present.
                  self.Error is raised if default is default is NO_DEFAULT
  
          Returns:
              numpy array if varname represents an array, scalar otherwise.