Модуль полки в Python не работает: «тип БД не может быть определен»

Я пытаюсь создать простую программу для хранения паролей на Python, и она кажется довольно простой, поэтому мне интересно, правильно ли я использую полку.

У меня есть основной файл .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()

А другой файл, passwords_dict.py, это просто пустой словарь.

Но когда я пытаюсь запустить программу, я получаю эту ошибку:

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

Когда я пытаюсь использовать anydbm, я получаю эту ошибку:

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

И когда я пытаюсь использовать вместо этого dbm, я получаю эту ошибку:

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')

Что я делаю неправильно? Есть ли другой способ сохранить словарь и по-прежнему иметь возможность извлекать ключи с помощью пользовательского ввода (а не весь словарь, что, как я полагаю, то, что делает pickle)?

Ответы на вопрос(3)

Ваш ответ на вопрос