Простое хранение данных в Python - PullRequest
3 голосов
/ 17 мая 2009

Я ищу простое решение, использующее Python для хранения данных в виде плоского файла, чтобы каждая строка представляла собой строковое представление массива, который можно легко проанализировать.

Я уверен, что в python есть библиотека для простого выполнения такой задачи, но до сих пор все найденные мной подходы казались небрежными, чтобы заставить его работать, и я уверен, что есть лучший подход. Пока я пробовал:

  • метод array.toFile (), но не смог выяснить, как заставить его работать с вложенными массивами строк, он, казалось, ориентирован на целочисленные данные.
  • Списки и наборы не имеют встроенного метода toFile, поэтому мне пришлось бы анализировать и кодировать его вручную.
  • CSV выглядел хорошим подходом, но для этого также потребовался бы его ручной анализ, и он не позволял мне просто добавлять новые строки в конце - поэтому любые новые вызовы CSVWriter перезаписывают существующие данные файла.

Я действительно стараюсь избегать использования баз данных (возможно, SQLite, но это кажется немного излишним), потому что я пытаюсь разработать это, чтобы не иметь никаких программных предпосылок, кроме Python.

Ответы [ 5 ]

10 голосов
/ 17 мая 2009

В дополнение к pickle (, упомянутому выше ), есть json (встроенный в 2.6, доступный через simplejson до этого), и marshal. Кроме того, есть reader в том же csv модуле , в котором находится писатель.

ОБНОВЛЕНИЕ: Как отметил в комментарии С. Лотт, есть также YAML, доступный через PyYAML , среди прочих.

6 голосов
/ 17 мая 2009
4 голосов
/ 17 мая 2009

Должен ли файл быть читаемым человеком? Если нет, то полка действительно проста в использовании.

2 голосов
/ 18 мая 2009

Я ищу простое решение, использующее Python для хранения данных в виде плоского файла, чтобы каждая строка представляла собой строковое представление массива, который можно легко проанализировать.

Будут ли данные когда-либо анализироваться программами Python? Если нет, то я бы избегал pickle et al (полка и маршал), так как они очень специфичны для Python. JSON и YAML имеют важное преимущество, заключающееся в том, что парсеры легко доступны практически для любого языка.

1 голос
/ 13 сентября 2009

В этом решении на SourceForge используются только стандартные модули Python:

модуль y_serial.py :: хранилище объектов Python с SQLite

"Сериализация + постоянство :: в несколько строк кода сжимают и аннотируют объекты Python в SQLite, а затем извлекают их в хронологическом порядке по ключевым словам без какого-либо SQL. Наиболее полезный" стандартный "модуль для базы данных для хранения данных без схемы . "

http://yserial.sourceforge.net

SQLite совсем не "перебор" - вы будете удивлены, насколько он прост; плюс он решает более общие проблемы с сохранением данных.

...