Ich versuche, ein einfaches Passwort speichern-Programm in Python, und es scheint ziemlich einfach, so frage ich mich, wenn ich Regal falsch verwende.Shelve-Modul in Python funktioniert nicht: "db-Typ kann nicht bestimmt werden"
ich 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()
Und die andere Datei, passwords_dict.py, ist nur ein leeres Wörterbuch.
Aber wenn ich versuche, das Programm auszuführen, erhalte ich diese 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, bekomme ich diesen Fehler:
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, benutze dbm stattdessen, bekomme ich diesen fehler:
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 trotzdem Schlüssel mithilfe von Benutzereingaben zu extrahieren (anstatt des gesamten Wörterbuchs, was wohl die Beize ist)?
sorry, was seine tempfile? das funktioniert auch wenn die tempdatei bereits existiert? –
'tempfile' ist ein Standard-Python-Modul. 'Tempdatei.mkstemp' sollte per Definition eine nicht existierende Datei erstellen. –