Próbuję zrobić prosty program do przechowywania haseł w Pythonie, i wydaje się to dość proste, więc zastanawiam się, czy używam źle odkładanej półki.Moduł półki w pytonie nie działa: "nie można określić typu db"
mam główny plik .py:
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()
a drugi plik passwords_dict.py, jest tylko pusty słownik.
Ale gdy próbuję uruchomić program, otrzymuję ten błąd:
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
Kiedy próbuję użyć anydbm zamiast, otrzymuję ten błąd:
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
I gdy próbuję zamiast tego użyj dbm, otrzymuję ten błąd:
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')
Co robię źle? Czy istnieje inny sposób na przechowywanie słownika i wciąż można wydobywać klucze za pomocą danych wprowadzanych przez użytkownika (zamiast całego słownika, który, jak sądzę, jest tym, co robi piksel)?
Niestety, co jest jego pliku tymczasowego? działa to również, jeśli tempfile już istnieje? –
'tempfile' to standardowy moduł python. 'tempfile.mkstemp' powinien z definicji utworzyć nieistniejący plik. –