Trivial point, but putting the ```netCDF4.Dataset``` within the ```__init__``` of the context manager means that doing

    with SaveManager('wibble.nc'):
        pass

causes an empty file to be created even though no explicit save has been performed. Would you consider putting the ```netCDF4.Dataset``` statement within the ```save()``` method to create the dataset only if it doesn't exist? Consequently, you'd also have
to update the ```__exit__``` method.