2

我有一个 Python 程序,我试图在其中使用这个押韵字典来查找押韵。

字典库设置的一部分由创建三个 gdbm.db文件的 C 程序工作。执行此操作的代码可在此处公开获得(来自“获取源代码”部分),C 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 gdbm 模块来访问数据库。

但是,我不能。当我运行以下命令时:

import gdbm
words = gdbm.open('/usr/share/rhyme/words.db')

我收到以下错误:

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

是否存在文件不兼容问题?用 C 语言创建的一些 gdbm 文件不能用 Python 打开吗?

(这是 OSX 10.6.8 上的 Python 2.7。Python 的 gdbm 是通过 MacPorts 安装的)

4

2 回答 2

1

引用 Python 的创造者(都跪下重复我们不配! x3 :-)

简单——gdbm 对字节顺序很敏感。唉,除了将其转换为更便携的格式以进行传输或修补 gdbm 源之外,我不知道该怎么做:-(

——Guido van Rossum(主页:http ://www.python.org/~guido/ )

于 2013-04-19T18:04:42.260 回答
1

您是如何创建 words.db 文件的?看起来 words.db 已损坏或格式不受您在 Mac OS X 上的 gdbm 库的特定版本支持。

于 2013-04-17T20:53:02.447 回答