Сохранение словарей в файл (numpy и Python 2/3 friendly)
Я хочу создать иерархическое хранилище значений ключей в Python, которое сводится к хранению словарей в файлах. Под этим я подразумеваю любой тип структуры словаря, который может содержать другие словари, числовые массивы, сериализуемые объекты Python и т. Д. Мало того, я хочу, чтобы он сохранял пустые массивы и оптимизировал пространство между Python 2 и 3.
Ниже приведены методы, которые я знаю, там. Мой вопрос: чего не хватает в этом списке, и есть ли альтернатива, которая уклоняется от всего, мои нарушители соглашения?
Питонаpickle
модуль (разжигатель сделок: сильно раздувает размер массивов)Numpy-хsave
/savez
/load
(прерыватель сделки: несовместимый формат в Python 2/3)Замена PyTables для numpy.savez (выключатель: работает только с массивами)Использование PyTables вручную (прерыватель сделки: я хочу это для постоянно меняющегося исследовательского кода, поэтому очень удобно иметь возможность выгружать словари в файлы, вызывая одну функцию)Замена PyTablesnumpy.savez
многообещающе, так как мне нравится идея использовать hdf5, и он действительно эффективно сжимает массивы numpy, что является большим плюсом. Тем не менее, он не требует какого-либо типа структуры словаря.
В последнее время я использовал что-то похожее на замену PyTables, но улучшил его, чтобы можно было хранить записи любого типа. Это на самом деле работает довольно хорошо, но я обнаруживаю, что храню примитивные типы данных в массивах длины 1, что немного неудобно (и неоднозначно для фактических массивов длины 1), даже если я установилchunksize
до 1, так что это не займет так много места.
Есть ли что-то подобное уже там?
Спасибо!