html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/2995#issuecomment-657798184,https://api.github.com/repos/pydata/xarray/issues/2995,657798184,MDEyOklzc3VlQ29tbWVudDY1Nzc5ODE4NA==,2067093,2020-07-13T21:17:06Z,2020-07-13T21:17:06Z,NONE,"I ran into this issue, here's a simple workaround that seems to work:
```python
def dataset_to_bytes(ds: xr.Dataset, name: str = ""my-dataset"") -> bytes:
""""""Converts datset to bytes.""""""
nc4_ds = netCDF4.Dataset(name, mode=""w"", diskless=True, memory=ds.nbytes)
nc4_store = NetCDF4DataStore(nc4_ds)
dump_to_store(ds, nc4_store)
res_mem = nc4_ds.close()
res_bytes = res_mem.tobytes()
return res_bytes
```
I tested this using the following:
```python
import BytesIO
fname = ""REDACTED.nc""
ds = xr.load_dataset(fname)
ds_bytes = dataset_to_bytes(ds)
ds2 = xr.load_dataset(BytesIO(ds_bytes))
assert ds2.equals(ds) and all(ds2.attrs[k]==ds.attrs[k] for k in set(ds2.attrs).union(ds.attrs))
```
The assertion holds true, however the file size on disk is different. It's possible they were saved using different netCDF4 versions, I haven't had time to test that.
I tried using just `ds.to_netcdf()` but get the following error:
`ValueError: NetCDF 3 does not support type |S32`
That's because it falls back to the `'scipy'` engine. Would be nice to have a non-hacky way to write netcdf4 files to byte streams. :smiley:","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,449706080