Может GDBM базы данных, созданные в C быть открыт в Python?


У меня есть программа на Python, в которой я пытаюсь использовать этот словарь рифм для поиска рифм.

Часть настройки библиотеки словарей выполняется программой на языке Си, создающей три файла GDB .db. Код, который делает это публично доступные здесь (с разделе источник'), а ключевая часть с gdbm построитель compile.c выглядит следующим образом:

#include <gdbm.h>

...<snip>...

int main(int argc, char *argv[]) {
  FILE *input;
  GDBM_FILE output;

...<snip>...

output = gdbm_open(argv[2], 0, GDBM_NEWDB, 0644, 0);

...<snip>...

gdbm_sync(output);

...<snip>...

words.db создается, и к нему можно успешно получить доступ из интерфейса командной строки в комплекте.

Согласно странице примера библиотеки, я должен иметь возможность использовать модуль python GDB для доступа к базе данных.

Однако я не могу этого сделать. Когда я выполняю следующее:
import gdbm
words = gdbm.open('/usr/share/rhyme/words.db')

Я получаю следующую ошибку:

    words = gdbm.open('/usr/share/rhyme/words.db')
gdbm.error: Bad magic number

Существует ли проблема несовместимости файлов? Некоторые файлы GDB, созданные в C, не открываются с помощью Python?

(это с Python 2.7 на OSX 10.6.8. GDB Python был установлен через MacPorts)

2 2

2 ответа:

Как вы создали слова.файл БД? Это похоже на слова.БД повреждена или находится в формате, не поддерживаемом вашей конкретной версией библиотеки GDB на Mac OS X.

Цитируя создателя питона (все преклоняют колени и повторяют мы недостойны! x3 : -)

Простой -- GDB чувствителен к порядку байтов. Увы, я не знаю. что с этим делать, кроме как конвертировать его в более портативный формат для перенос или исправление источника GDB:- (

--Guido van Rossum (Главная Страница: http://www.python.org / ~Гвидо/)