Inside a gpw-file

calc.write('abc.gpw')  # , mode='all')
del calc
calc = GPAW('abc.gpw')  # ... and we're back!

A .gpw file uses the well known ase.io.ulm format: Efficient and NumPy-friendly (also used for ASE trajectory files).

$ ase ulm abc.gpw
abc.gpw  (tag: "GPAW", 1 item)
item #0:
{
    atoms: {
        cell: [[0.0, 2.715, 2.715], [2.715, 0.0, 2.715], [2.715, 2.715, 0.0]],
        numbers: <ndarray shape=(2,) dtype=int64>,
        pbc: [True, True, True],
        positions: <ndarray shape=(2, 3) dtype=float64>},
    bohr: 0.5291772105638411,
    density: {
        atomic_density_matrices: <ndarray shape=(1, 182) dtype=float64>,
        density: <ndarray shape=(1, 18, 18, 18) dtype=float64>},
    gpaw_version: 21.1.1b1,
    ha: 27.211386024367243,
    hamiltonian: {
        atomic_hamiltonian_matrices: <ndarray shape=(1, 182) dtype=float64>,
        e_coulomb: -13.668977343791727,
        e_entropy: -0.0010673898921926962,
        e_external: 0.0,
        e_kinetic: 15.569058505949739,
        e_total_extrapolated: -10.788983937133224,
        e_total_free: -10.78951763207932,
        e_xc: -12.661684474376418,
        e_zero: -0.02684692996872059,
        potential: <ndarray shape=(1, 18, 18, 18) dtype=float64>,
        xc: {}},
    parameters: {
        kpts: {'density': 4},
        mode: pw,
        xc: PBE},
    results: {
        dipole: <ndarray shape=(3,) dtype=float64>,
        energy: -10.788983937133224,
        forces: <ndarray shape=(2, 3) dtype=float64>,
        free_energy: -10.78951763207932,
        magmom: 0.0,
        magmoms: <ndarray shape=(2,) dtype=float64>,
        stress: <ndarray shape=(6,) dtype=float64>},
    scf: {
        converged: True},
    version: 3,
    wave_functions: {
        coefficients: <ndarray shape=(1, 35, 8, 577) dtype=complex128>,
        eigenvalues: <ndarray shape=(1, 35, 8) dtype=float64>,
        fermi_levels: <ndarray shape=(1,) dtype=float64>,
        ha: 27.211386024367243,
        indices: <ndarray shape=(35, 577) dtype=int32>,
        kpts: {
            atommap: <ndarray shape=(24, 2) dtype=int64>,
            bz2ibz: <ndarray shape=(729,) dtype=int64>,
            bzkpts: <ndarray shape=(729, 3) dtype=float64>,
            ibzkpts: <ndarray shape=(35, 3) dtype=float64>,
            rotations: <ndarray shape=(24, 3, 3) dtype=int64>,
            translations: <ndarray shape=(24, 3) dtype=int64>,
            weights: <ndarray shape=(35,) dtype=float64>},
        occupations: <ndarray shape=(1, 35, 8) dtype=float64>,
        projections: <ndarray shape=(1, 35, 8, 26) dtype=complex128>,
        version: 2}}
>>> from ase.io.ulm import ulmopen
>>> u = ulmopen('abc.gpw')
>>> eps = u.wave_functions.eigenvalues
>>> eps.shape  # (spins, k-points, bands)
(1, 35, 8)
>>> eps[0, 0]
array([-6.6520288 ,  5.31633309,  5.3163331 ,  5.3163331 ,  7.87544082,
        7.87544083,  7.87544083,  8.68213876])

Same thing using gpaw.GPAW.get_eigenvalues():

>>> from gpaw import GPAW
>>> GPAW('abc.gpw').get_eigenvalues(spin=0, kpt=0)
array([-6.6520288 ,  5.31633309,  5.3163331 ,  5.3163331 ,  7.87544082,
        7.87544083,  7.87544083,  8.68213876])