【发布时间】:2013-04-07 00:10:06
【问题描述】:
我有一个 Python 程序,我在其中尝试使用 this rhyming dictionary 来查找韵律。
字典库设置的一部分由创建三个 gdbm .db 文件的 C 程序工作。执行此操作的代码是公开可用的 here(来自“获取源代码”部分),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 已创建,并且可以从捆绑的命令行界面成功访问。
根据the library's example page,我应该可以使用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 安装的)
【问题讨论】:
-
对我来说很好用:r["AY1-M"] = "ANTICRIME BEIM CHIME CLIMB CLIME CRIME DIME GRIME HAIM HEIM HIME I'M KIME LIME LYME MIME ONETIME PART-TIME PRIME RHYME RIME SEIM SIME SLIME SUBLIME SYME THYME TIME" 我在 Ubuntu (Precise) 上使用标准的 "libgdbm-dev" 包编译了数据库,并使用 Python 2.7.3 读取它。
-
好的,谢谢,这让我觉得这是 OSX 特有的问题。可能与我通过 MacPorts 与操作系统的 GDBM 安装的 GDBM 风格有关。
-
嘿比尔。你能删除图书馆吗?您能比较 gdbm 标头吗?
标签: python c macos magic-numbers gdbm