On Fri, Apr 28, 2017 at 03:38:36PM -0700, [email protected] wrote: > Hi everybody, > > I've successfully gotten a web app that takes user data, uses that to make > a query, and the outputs a CSV file. However, what I'd really like is to > output an HDF5 file. I googled around and there doesn't seem to be any > documentation on outputting an HD5F file from a Django web app. I tried > adapting the Django example of outputting a PDF ( > https://docs.djangoproject.com/en/1.10/howto/outputting-pdf/) like this, > > > I'm making a website using the Django framework. I've successfully gotten a > web app that takes user data, uses that to make a query, and the outputs a > CSV file. However, what I'd really like is to output an HDF5 file. I > googled around and there doesn't seem to be any documentation on outputting > an HD5F file from a Django web app. I tried adapting the Django example of > outputting a PDF ( > https://docs.djangoproject.com/en/1.10/howto/outputting-pdf/) like this, > > response = HttpResponse(content_type='application/hdf5') > response['Content-Disposition'] = 'attachment; filename="test.hdf5"' > > h = h5py.File(response) > h.create_dataset('Name', data=test[0].name) > > > but I get the following error, > > 'HttpResponse' object has no attribute 'encode' > > > So I guess I'm misunderstanding how to use content_type in Django's > HttpResponse. Does anybody have any experience with outputting HDF5 files > form a Django web app or could help clarify how I might adapt the > HttpResponse to work with HDF5?
Hi, I've never personally used h5py, but at least from the docs [1] it looks like it only supports writing output to real files in the local filesystem, not into any file-like object. From a cursory look, the documentation seems to imply that all file operations are performed by low-level C code that doesn't know a thing about Python, which makes it hard to support file-like Python objects. According to the docs, the “core” file driver with backing_store=False might do the trick, but I don't see how you could then read the byte stream of the in-memory file afterwards. Barring that, you'll need to create a temporary file (for example with the tempfile module [2]), write the HDF5 file there, read it into the response, and finally delete the temporary file. Good luck, Michal [1]: http://docs.h5py.org/en/latest/high/file.html#File [2]: https://docs.python.org/3/library/tempfile.html -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/20170502082822.GB23772%40koniiiik.org. For more options, visit https://groups.google.com/d/optout.
signature.asc
Description: Digital signature

