shelve db type konnte nicht ermittelt werden, welche db gdb nicht erkennt
Warum löst Shelve einen Fehler aus, wenn ich versuche, eine Datei zu öffnen, die gerade von Shelve erstellt wurde?
import shelve
info_file_name = "/Users/bacon/myproject/temp/test.info"
info_file = shelve.open(info_file_name)
info_file['ok'] = 'wass'
info_file.close()
info_file = shelve.open(info_file_name) # raise exception db type could not be determined..
info_file.close()
Ich führe Python 2.5 aus, falls dies relevant ist
Der genaue Fehler ist der folgende:
db type could not be determined
its ausgelöst durchanydbm.py
open
Methode
Ich weiß, es benutzt gdbm. Ich habe die whichdb.py-Datei überprüft und sie versucht, gdbm-Dateien mit diesem @ zu identifiziere
# Read the start of the file -- the magic number
s16 = f.read(16)
s = s16[0:4]
# Convert to 4-byte int in native byte order -- return "" if impossible
(magic,) = struct.unpack("=l", s)
# Check for GNU dbm
if magic == 0x13579ace:
return "gdbm"
Aber die "magische" Nummer in meiner Datei ist324508367
(0x13579acf
) nur die letzte stellige Änderung !!)
Ich habe versucht, die Datei mit einer anderen Sprache (Ruby) zu öffnen, und konnte sie problemlos öffnen. Dies scheint also ein Fehler in der Datei whichdb.py zu sein, der versucht, die richtige Datenbank zu identifizieren.