Простое хранение данных в 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 вовсе не "перебор" - вы будете удивлены, насколько все просто; плюс это решает более общие проблемы с сохранением данных.

Другие вопросы по тегам