Простое хранение данных в Python
Я ищу простое решение, использующее Python для хранения данных в виде плоского файла, чтобы каждая строка представляла собой строковое представление массива, который можно легко проанализировать.
Я уверен, что в python есть библиотека для простого выполнения такой задачи, но до сих пор все подходы, которые я нашел, казались небрежными, чтобы заставить их работать, и я уверен, что есть лучший подход. Пока что я пробовал:
- метод array.toFile(), но не смог понять, как заставить его работать с вложенными массивами строк, он, похоже, был ориентирован на целочисленные данные.
- Списки и наборы не имеют встроенного метода toFile, поэтому мне пришлось бы анализировать и кодировать его вручную.
- CSV выглядел как хороший подход, но для этого также потребовался бы ручной анализ, и он не позволял мне просто добавлять новые строки в конце - поэтому любые новые вызовы CSVWriter будут перезаписывать существующие данные файла.
Я действительно стараюсь избегать использования баз данных (возможно, SQLite, но это кажется немного излишним), потому что я пытаюсь разработать это, чтобы не иметь никаких программных предпосылок, кроме Python.
5 ответов
Должен ли файл быть читаемым человеком? Если нет, полка действительно проста в использовании.
В дополнение к pickle
( упомянуто выше), есть json
(встроено в 2.6, доступно через simplejson до этого), и marshal
, Кроме того, есть reader
В то же самое csv
модуль, в котором находится писатель.
ОБНОВЛЕНИЕ: Как отметил в комментарии С. Лотт, есть также YAML, доступный через PyYAML, среди прочих.
Я ищу простое решение, использующее Python для хранения данных в виде плоского файла, чтобы каждая строка представляла собой строковое представление массива, который можно легко проанализировать.
Будут ли данные когда-либо анализироваться программами Python? Если нет, то я бы избегал pickle et al (полка и маршал), так как они очень специфичны для Python. JSON и YAML имеют важное преимущество в том, что парсеры легко доступны практически для любого языка.
Это решение в SourceForge использует только стандартные модули Python:
Модуль y_serial.py:: хранилище объектов Python с SQLite
"Сериализация + постоянство:: в несколько строк кода сжимают и аннотируют объекты Python в SQLite, а затем извлекают их в хронологическом порядке по ключевым словам без какого-либо SQL. Наиболее полезный" стандартный "модуль для базы данных для хранения данных без схемы".
http://yserial.sourceforge.net/
SQLite вовсе не "перебор" - вы будете удивлены, насколько все просто; плюс это решает более общие проблемы с сохранением данных.