2

この押韻辞書を使用して韻を調べようとしているPythonプログラムがあります。

辞書ライブラリのセットアップの一部は、3 つの 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 に答える