Shelve-Modul in Python funktioniert nicht: "DB-Typ kann nicht bestimmt werden"

Ich versuche, ein einfaches Programm zum Speichern von Passwörtern in Python zu erstellen, und es scheint ziemlich einfach zu sein. Daher frage ich mich, ob ich Shelve falsch verwende.

Ich habe die Haupt-PY-Datei:

import shelve

passwords = shelve.open('./passwords_dict.py')

choice = raw_input("Add password (a) or choose site (c)?")

if choice[0] == 'a':
    site_key = raw_input("Add for which site? ").lower()
    userpass = raw_input("Add any info such as username, email, or passwords: ")

    passwords[site_key] = userpass

else:
    site = raw_input("Which site? ").lower()
    if site in passwords:
        print "Info for " + site + ": " + passwords[site]
    else:
        print site, "doesn't seem to exist!"

print "Done!"

passwords.close()

Die andere Datei, passwords_dict.py, ist nur ein leeres Wörterbuch.

Aber wenn ich versuche, das Programm auszuführen, erhalte ich folgende Fehlermeldung:

Traceback (most recent call last):
File "passwords.py", line 3, in <module>
passwords = shelve.open('passwords_dict.py')
File "/usr/lib/python2.7/shelve.py", line 239, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "/usr/lib/python2.7/shelve.py", line 223, in __init__
Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback)
File "/usr/lib/python2.7/anydbm.py", line 82, in open
raise error, "db type could not be determined"
anydbm.error: db type could not be determined

Wenn ich versuche, stattdessen anydbm zu verwenden, erhalte ich die folgende Fehlermeldung:

Traceback (most recent call last):
File "passwords.py", line 3, in <module>
passwords = anydbm.open('passwords_dict.py')
File "/usr/lib/python2.7/anydbm.py", line 82, in open
raise error, "db type could not be determined"
anydbm.error: db type could not be determined

Und wenn ich versuche, stattdessen dbm zu verwenden, erhalte ich folgende Fehlermeldung:

Traceback (most recent call last):
File "passwords.py", line 3, in <module>
passwords = dbm.open('./passwords_dict.py')
dbm.error: (2, 'No such file or directory')

Was mache ich falsch? Gibt es eine andere Möglichkeit, ein Wörterbuch zu speichern und dennoch Schlüssel mithilfe von Benutzereingaben zu extrahieren (und nicht das gesamte Wörterbuch, was Pickle wohl tut)?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage