我正在尝试用Python制作一个简单的密码存储程序,它看起来很简单,所以我想知道我是否使用shelve有误。
我有主要的.py文件:
当我尝试使用anydbm时,出现了以下错误:
当我尝试使用dbm时,出现了以下错误:
我做错了什么?还有其他方法可以存储字典并仍能使用用户输入提取键(而不是整个字典,这可能是pickle所做的)吗?
我有主要的.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所做的)吗?
tempfile
是一个标准的 Python 模块。根据定义,tempfile.mkstemp
应该创建一个不存在的文件。 - Kalle Richter